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:36:22 UTC

svn commit: r1161391 - /james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractSession.java

Author: norman
Date: Thu Aug 25 05:36:22 2011
New Revision: 1161391

URL: http://svn.apache.org/viewvc?rev=1161391&view=rev
Log:
AbstractSession.write(...) may fail to close the channel in some cases. See PROTOCOLS-27

Modified:
    james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractSession.java

Modified: james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractSession.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractSession.java?rev=1161391&r1=1161390&r2=1161391&view=diff
==============================================================================
--- james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractSession.java (original)
+++ james/protocols/trunk/impl/src/main/java/org/apache/james/protocols/impl/AbstractSession.java Thu Aug 25 05:36:22 2011
@@ -151,22 +151,13 @@ public abstract class AbstractSession im
      * @see org.apache.james.api.protocol.ProtocolSession#writeResponse(org.apache.james.api.protocol.Response)
      */
     public void writeResponse(final Response response) {
-        Channel channel = getChannelHandlerContext().getChannel();
+    	Channel channel = getChannelHandlerContext().getChannel();
         if (response != null && channel.isConnected()) {
-            channel.write(response).addListener(new ChannelFutureListener() {
-                
-                /*
-                 * (non-Javadoc)
-                 * @see org.jboss.netty.channel.ChannelFutureListener#operationComplete(org.jboss.netty.channel.ChannelFuture)
-                 */
-                public void operationComplete(ChannelFuture c) throws Exception {
-                    // once the response was written we can close the channel if needed
-                    if (response.isEndSession() && c.getChannel().isConnected()) {
-                        c.getChannel().close();         
-                    }
-                }
-            });
-          
+           ChannelFuture cf = channel.write(response);
+           if (response.isEndSession()) {
+                // close the channel if needed after the message was written out
+                cf.addListener(ChannelFutureListener.CLOSE);
+           }
         }
     }
 



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