You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by no...@apache.org on 2011/08/25 07:59:53 UTC

svn commit: r1161399 - /james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/ImapChannelUpstreamHandler.java

Author: norman
Date: Thu Aug 25 05:59:53 2011
New Revision: 1161399

URL: http://svn.apache.org/viewvc?rev=1161399&view=rev
Log:
Make sure all messages are flushed out to the client before closing the channel. See JAMES-1303

Modified:
    james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/ImapChannelUpstreamHandler.java

Modified: james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/ImapChannelUpstreamHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/ImapChannelUpstreamHandler.java?rev=1161399&r1=1161398&r2=1161399&view=diff
==============================================================================
--- james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/ImapChannelUpstreamHandler.java (original)
+++ james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/ImapChannelUpstreamHandler.java Thu Aug 25 05:59:53 2011
@@ -34,7 +34,9 @@ import org.apache.james.imap.encode.base
 import org.apache.james.imap.main.ResponseEncoder;
 import org.apache.james.protocols.impl.ChannelAttributeSupport;
 import org.apache.james.protocols.impl.SessionLog;
+import org.jboss.netty.buffer.ChannelBuffers;
 import org.jboss.netty.channel.Channel;
+import org.jboss.netty.channel.ChannelFutureListener;
 import org.jboss.netty.channel.ChannelHandlerContext;
 import org.jboss.netty.channel.ChannelPipeline;
 import org.jboss.netty.channel.ChannelStateEvent;
@@ -150,8 +152,11 @@ public class ImapChannelUpstreamHandler 
             if (imapSession != null)
                 imapSession.logout();
 
-            // just close the channel now!
-            ctx.getChannel().close();
+            // Make sure we close the channel after all the buffers were flushed out
+            Channel channel = ctx.getChannel();
+            if (channel.isConnected()) {
+                channel.write(ChannelBuffers.EMPTY_BUFFER).addListener(ChannelFutureListener.CLOSE);
+            }
 
         }
 
@@ -175,7 +180,11 @@ public class ImapChannelUpstreamHandler 
             processor.process(message, responseEncoder, session);
 
             if (session.getState() == ImapSessionState.LOGOUT) {
-                ctx.getChannel().close();
+                // Make sure we close the channel after all the buffers were flushed out
+                Channel channel = ctx.getChannel();
+                if (channel.isConnected()) {
+                    channel.write(ChannelBuffers.EMPTY_BUFFER).addListener(ChannelFutureListener.CLOSE);
+                }
             }
             final IOException failure = responseEncoder.getFailure();
 



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org