### Eclipse Workspace Patch 1.0 #P org.eclipse.rse.services.files.ftp Index: src/org/eclipse/rse/internal/services/files/ftp/FTPService.java =================================================================== RCS file: /cvsroot/dsdp/org.eclipse.tm.rse/plugins/org.eclipse.rse.services.files.ftp/src/org/eclipse/rse/internal/services/files/ftp/FTPService.java,v retrieving revision 1.27 diff -u -r1.27 FTPService.java --- src/org/eclipse/rse/internal/services/files/ftp/FTPService.java 30 Jul 2007 16:37:48 -0000 1.27 +++ src/org/eclipse/rse/internal/services/files/ftp/FTPService.java 31 Jul 2007 11:10:48 -0000 @@ -1201,20 +1201,28 @@ } } - FTPClient ftpClient = getFTPClient(); - InputStream stream = null; - try { - - setFileType(isBinary); - - stream = new FTPBufferedInputStream(ftpClient.retrieveFileStream(remoteFile), ftpClient); - } - catch (Exception e) { - throw new RemoteFileIOException(e); + if(_commandMutex.waitForLock(monitor, Long.MAX_VALUE)) + { + + FTPClient ftpClient = getFTPClient(); + + try { + + + ftpClient.changeWorkingDirectory(remoteParent); + setFileType(isBinary); + stream = new FTPBufferedInputStream(ftpClient.retrieveFileStream(remoteFile), ftpClient); + } + catch (Exception e) { + throw new RemoteFileIOException(e); + }finally { + _commandMutex.release(); + } } + return stream; } @@ -1232,20 +1240,24 @@ } } - FTPClient ftpClient = getFTPClient(); - OutputStream stream = null; - try { - - ftpClient.changeWorkingDirectory(remoteParent); - - setFileType(isBinary); + if(_commandMutex.waitForLock(monitor, Long.MAX_VALUE)) + { + + FTPClient ftpClient = getFTPClient(); - stream = new FTPBufferedOutputStream(ftpClient.storeFileStream(remoteFile), ftpClient); - } - catch (Exception e) { - throw new RemoteFileIOException(e); + try { + + ftpClient.changeWorkingDirectory(remoteParent); + setFileType(isBinary); + stream = new FTPBufferedOutputStream(ftpClient.storeFileStream(remoteFile), ftpClient); + } + catch (Exception e) { + throw new RemoteFileIOException(e); + }finally { + _commandMutex.release(); + } } return stream;