Author: norman
Date: Mon Jan 24 10:32:31 2011
New Revision: 1062721

URL: http://svn.apache.org/viewvc?rev=1062721&view=rev
Log:
Make sure we strip of the "last" CRLF when doing APPEND

Modified:
    
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/NettyImapRequestLineReader.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/netty/NettyImapRequestLineReader.java?rev=1062721&r1=1062720&r2=1062721&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
 Mon Jan 24 10:32:31 2011
@@ -23,6 +23,7 @@ import java.io.InputStream;
 
 import org.apache.james.imap.decode.DecodingException;
 import org.apache.james.imap.decode.ImapRequestLineReader;
+import org.apache.james.imap.decode.base.EolInputStream;
 import org.jboss.netty.buffer.ChannelBuffer;
 import org.jboss.netty.buffer.ChannelBufferInputStream;
 import org.jboss.netty.buffer.ChannelBuffers;
@@ -73,11 +74,26 @@ public class NettyImapRequestLineReader 
      * Return a {@link ChannelBufferInputStream} if the wrapped {@link 
ChannelBuffer} contains enough data. If not
      * it will throw a {@link NotEnoughDataException} 
      */
-    public InputStream read(int size) throws DecodingException {
-        if (size > buffer.readableBytes()) {
+    public InputStream read(int size, boolean extraCRLF) throws 
DecodingException {
+        int crlf = 0;
+        if (extraCRLF) {
+            crlf = 2;
+        }
+        // Check if we have enough data
+        if (size  + crlf> buffer.readableBytes()) {
             throw new NotEnoughDataException(size);
         }
-        return new ChannelBufferInputStream(buffer, size);
+        
+        // Unset the next char.
+        nextSeen = false;
+        nextChar = 0;
+        
+        ChannelBufferInputStream in = new ChannelBufferInputStream(buffer, 
size);
+        if (extraCRLF) {
+            return new EolInputStream(this, in);
+        } else {
+            return in;
+        }
     }
 
     /*



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to