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: [email protected]
For additional commands, e-mail: [email protected]