1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-25 18:05:33 +02:00

Bug 305986 - [ftp][regression] NPE in testFTPReadAccessToRemoteHost due to race condition in isConnected()

This commit is contained in:
Martin Oberhuber 2010-03-16 13:39:41 +00:00
parent b2a06dd511
commit 9cc91b3547

View file

@ -84,6 +84,7 @@
* Martin Oberhuber (Wind River) - [285942] Throw exception when listing a non-folder
* Martin Oberhuber (Wind River) - [285948] Avoid recursive deletion over symbolic links
* Martin Oberhuber (Wind River) - [300398] Avoid product hang-up on isConnected()
* Martin Oberhuber (Wind River) - [305986] NPE due to race condition in isConnected()
********************************************************************************/
package org.eclipse.rse.internal.services.files.ftp;
@ -144,6 +145,7 @@ import org.eclipse.rse.services.files.RemoteFileSecurityException;
public class FTPService extends AbstractFileService implements IFTPService, IFilePermissionsService
{
private FTPClient _ftpClient;
private boolean _connected;
private long _ftpLastCheck;
private static long FTP_CONNECTION_CHECK_TIMEOUT = 30000; //msec before checking connection with NOOP
private FTPFile[] _ftpFiles;
@ -492,10 +494,12 @@ public class FTPService extends AbstractFileService implements IFTPService, IFil
//Just to be safe
clearCache(null);
_connected = true;
}
public void disconnect()
{
_connected = false;
clearCache(null);
try
{
@ -753,7 +757,7 @@ public class FTPService extends AbstractFileService implements IFTPService, IFil
{
boolean isConnected = false;
if(_ftpClient!=null) {
if(_ftpClient!=null && _connected) {
isConnected = _ftpClient.isConnected();
// Bug 300394: isConnected() is called on the main thread, so it must
// return fast without really checking the remote. In FTP, we deal