Author: sebb Date: Thu Mar 16 14:00:12 2017 New Revision: 1787188 URL: http://svn.apache.org/viewvc?rev=1787188&view=rev Log: NET-584 Error with org.apache.commons.net.ftp.FTPClient setControlKeepAliveTimeout Look for command completion first
Modified: commons/proper/net/trunk/src/main/java/org/apache/commons/net/ftp/FTPClient.java Modified: commons/proper/net/trunk/src/main/java/org/apache/commons/net/ftp/FTPClient.java URL: http://svn.apache.org/viewvc/commons/proper/net/trunk/src/main/java/org/apache/commons/net/ftp/FTPClient.java?rev=1787188&r1=1787187&r2=1787188&view=diff ============================================================================== --- commons/proper/net/trunk/src/main/java/org/apache/commons/net/ftp/FTPClient.java (original) +++ commons/proper/net/trunk/src/main/java/org/apache/commons/net/ftp/FTPClient.java Thu Mar 16 14:00:12 2017 @@ -681,9 +681,15 @@ implements Configurable Util.copyStream(local, output, getBufferSize(), CopyStreamEvent.UNKNOWN_STREAM_SIZE, __mergeListeners(csl), false); + output.close(); // ensure the file is fully written + socket.close(); // done writing the file + + // Get the transfer response + return completePendingCommand(); } catch (IOException e) { + Util.closeQuietly(output); // ignore close errors here Util.closeQuietly(socket); // ignore close errors here throw e; } finally { @@ -691,13 +697,6 @@ implements Configurable __cslDebug = csl.cleanUp(); // fetch any outstanding keepalive replies } } - - output.close(); // ensure the file is fully written - socket.close(); // done writing the file - - // Get the transfer response - boolean ok = completePendingCommand(); - return ok; } private OutputStream __storeFileStream(FTPCmd command, String remote) @@ -1925,6 +1924,9 @@ implements Configurable Util.copyStream(input, local, getBufferSize(), CopyStreamEvent.UNKNOWN_STREAM_SIZE, __mergeListeners(csl), false); + + // Get the transfer response + return completePendingCommand(); } finally { Util.closeQuietly(input); Util.closeQuietly(socket); @@ -1932,10 +1934,6 @@ implements Configurable __cslDebug = csl.cleanUp(); // fetch any outstanding keepalive replies } } - - // Get the transfer response - boolean ok = completePendingCommand(); - return ok; } /** @@ -3935,7 +3933,7 @@ implements Configurable } try { while(notAcked > 0) { - parent.__getReplyNoReport(); + parent.getReply(); // we do want to see these notAcked--; // only decrement if actually received } } catch (SocketTimeoutException e) { // NET-584