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/19 21:00:57 UTC

svn commit: r1159746 - in /james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty: IMAPServer.java NettyImapSession.java

Author: norman
Date: Fri Aug 19 19:00:57 2011
New Revision: 1159746

URL: http://svn.apache.org/viewvc?rev=1159746&view=rev
Log:
Fix NIO implementation of IMAPServer by making sure we use the same thread when manipulating the Pipeline. See JAMES-1299

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

Modified: james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/IMAPServer.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/IMAPServer.java?rev=1159746&r1=1159745&r2=1159746&view=diff
==============================================================================
--- james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/IMAPServer.java (original)
+++ james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/IMAPServer.java Fri Aug 19 19:00:57 2011
@@ -142,8 +142,7 @@ public class IMAPServer extends Abstract
                 // Add the text line decoder which limit the max line length,
                 // don't strip the delimiter and use CRLF as delimiter
                 pipeline.addLast(FRAMER, new DelimiterBasedFrameDecoder(maxLineLength, false, Delimiters.lineDelimiter()));
-                pipeline.addLast(REQUEST_DECODER, new ImapRequestFrameDecoder(decoder, inMemorySizeLimit));
-
+               
                 if (isSSLSocket()) {
                     // We need to set clientMode to false.
                     // See https://issues.apache.org/jira/browse/JAMES-1025
@@ -159,8 +158,10 @@ public class IMAPServer extends Abstract
                 ExecutionHandler ehandler = getExecutionHandler();
                 if (ehandler  != null) {
                     pipeline.addLast(EXECUTION_HANDLER, ehandler);
+
                 }
-               
+                pipeline.addLast(REQUEST_DECODER, new ImapRequestFrameDecoder(decoder, inMemorySizeLimit));
+
                 pipeline.addLast(CORE_HANDLER, createCoreHandler());
                 return pipeline;
             }

Modified: james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/NettyImapSession.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/NettyImapSession.java?rev=1159746&r1=1159745&r2=1159746&view=diff
==============================================================================
--- james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/NettyImapSession.java (original)
+++ james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/NettyImapSession.java Fri Aug 19 19:00:57 2011
@@ -241,7 +241,9 @@ public class NettyImapSession implements
      * .james.imap.api.process.ImapLineHandler)
      */
     public void pushLineHandler(ImapLineHandler lineHandler) {
-        context.getPipeline().addBefore("requestDecoder", "lineHandler" + handlerCount++, new ImapLineHandlerAdapter(lineHandler));
+        context.getChannel().setReadable(false);
+        context.getPipeline().addBefore(REQUEST_DECODER, "lineHandler" + handlerCount++, new ImapLineHandlerAdapter(lineHandler));
+        context.getChannel().setReadable(true);
     }
 
     /*
@@ -250,7 +252,9 @@ public class NettyImapSession implements
      * @see org.apache.james.imap.api.process.ImapSession#popLineHandler()
      */
     public void popLineHandler() {
+        context.getChannel().setReadable(false);
         context.getPipeline().remove("lineHandler" + --handlerCount);
+        context.getChannel().setReadable(true);
     }
 
     /*



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