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