You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ftpserver-commits@incubator.apache.org by ng...@apache.org on 2007/10/26 12:16:11 UTC

svn commit: r588620 - /incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/listener/mina/FtpResponseEncoder.java

Author: ngn
Date: Fri Oct 26 05:16:10 2007
New Revision: 588620

URL: http://svn.apache.org/viewvc?rev=588620&view=rev
Log:
Fix for closing connections before a reply has been sent (FTPSERVER-112). Patch by Rico Neubauer.

Modified:
    incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/listener/mina/FtpResponseEncoder.java

Modified: incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/listener/mina/FtpResponseEncoder.java
URL: http://svn.apache.org/viewvc/incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/listener/mina/FtpResponseEncoder.java?rev=588620&r1=588619&r2=588620&view=diff
==============================================================================
--- incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/listener/mina/FtpResponseEncoder.java (original)
+++ incubator/ftpserver/trunk/core/src/java/org/apache/ftpserver/listener/mina/FtpResponseEncoder.java Fri Oct 26 05:16:10 2007
@@ -22,9 +22,11 @@
 import java.nio.charset.Charset;
 import java.nio.charset.CharsetEncoder;
 
+import org.apache.ftpserver.ftplet.FtpException;
 import org.apache.ftpserver.ftplet.FtpReply;
 import org.apache.mina.common.ByteBuffer;
 import org.apache.mina.common.IoSession;
+import org.apache.mina.common.WriteFuture;
 import org.apache.mina.filter.codec.ProtocolEncoderAdapter;
 import org.apache.mina.filter.codec.ProtocolEncoderOutput;
 import org.apache.mina.filter.codec.demux.MessageEncoder;
@@ -47,5 +49,12 @@
         
         buf.flip();
         out.write(buf);
+        
+        // 2007-10-26 - flushing the response, it is important to receive replies like 421 - service unavailable, see https://issues.apache.org/jira/browse/FTPSERVER-112
+        WriteFuture future = out.flush();
+        future.join(5000);
+        if (!future.isWritten()) {
+        	throw new FtpException("The response could not be sent for 5 seconds");
+        }
     }
 }