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