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/01/23 12:04:54 UTC
svn commit: r1062386 - in
/james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty:
ImapRequestFrameDecoder.java NettyImapRequestLineReader.java
Author: norman
Date: Sun Jan 23 11:04:53 2011
New Revision: 1062386
URL: http://svn.apache.org/viewvc?rev=1062386&view=rev
Log:
Make sure we don't send multiple "+\r\n" while retry to parse request
Modified:
james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/ImapRequestFrameDecoder.java
james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/NettyImapRequestLineReader.java
Modified: james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/ImapRequestFrameDecoder.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/ImapRequestFrameDecoder.java?rev=1062386&r1=1062385&r2=1062386&view=diff
==============================================================================
--- james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/ImapRequestFrameDecoder.java (original)
+++ james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/ImapRequestFrameDecoder.java Sun Jan 23 11:04:53 2011
@@ -47,10 +47,11 @@ public class ImapRequestFrameDecoder ext
*/
protected Object decode(ChannelHandlerContext ctx, Channel channel, ChannelBuffer buffer) throws Exception {
buffer.markReaderIndex();
-
+ boolean retry = false;
// check if we failed before and if we already know how much data we need to sucess next run
Object attachment = ctx.getAttachment();
if (attachment != null) {
+ retry = true;
int size = (Integer) attachment;
// now see if the buffer hold enough data to process.
if (size != NettyImapRequestLineReader.NotEnoughDataException.UNKNOWN_SIZE && size > buffer.readableBytes()) {
@@ -62,7 +63,7 @@ public class ImapRequestFrameDecoder ext
try {
- ImapRequestLineReader reader = new NettyImapRequestLineReader(channel, buffer);
+ ImapRequestLineReader reader = new NettyImapRequestLineReader(channel, buffer, retry);
ImapMessage message = decoder.decode(reader, (ImapSession) attributes.get(channel));
// ok no errors found consume the rest of the line
Modified: james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/NettyImapRequestLineReader.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/NettyImapRequestLineReader.java?rev=1062386&r1=1062385&r2=1062386&view=diff
==============================================================================
--- james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/NettyImapRequestLineReader.java (original)
+++ james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/NettyImapRequestLineReader.java Sun Jan 23 11:04:53 2011
@@ -38,10 +38,13 @@ public class NettyImapRequestLineReader
private ChannelBuffer buffer;
private Channel channel;
private ChannelBuffer cRequest = ChannelBuffers.wrappedBuffer("+\r\n".getBytes());
-
- public NettyImapRequestLineReader(Channel channel, ChannelBuffer buffer) {
+ private boolean retry;
+
+ public NettyImapRequestLineReader(Channel channel, ChannelBuffer buffer, boolean retry) {
this.buffer = buffer;
this.channel = channel;
+ this.retry = retry;
+
}
@@ -83,7 +86,9 @@ public class NettyImapRequestLineReader
* @see org.apache.james.imap.decode.ImapRequestLineReader#commandContinuationRequest()
*/
protected void commandContinuationRequest() throws DecodingException {
- channel.write(cRequest);
+ // only write the request out if this is not a retry to process the request..
+
+ if (!retry) channel.write(cRequest);
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org