Author: norman
Date: Mon Jan 24 10:32:07 2011
New Revision: 1062720

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

Modified:
    
james/imap/trunk/message/src/main/java/org/apache/james/imap/decode/ImapRequestLineReader.java
    
james/imap/trunk/message/src/main/java/org/apache/james/imap/decode/ImapRequestStreamLineReader.java
    
james/imap/trunk/message/src/main/java/org/apache/james/imap/decode/parser/AppendCommandParser.java

Modified: 
james/imap/trunk/message/src/main/java/org/apache/james/imap/decode/ImapRequestLineReader.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/message/src/main/java/org/apache/james/imap/decode/ImapRequestLineReader.java?rev=1062720&r1=1062719&r2=1062720&view=diff
==============================================================================
--- 
james/imap/trunk/message/src/main/java/org/apache/james/imap/decode/ImapRequestLineReader.java
 (original)
+++ 
james/imap/trunk/message/src/main/java/org/apache/james/imap/decode/ImapRequestLineReader.java
 Mon Jan 24 10:32:07 2011
@@ -157,7 +157,7 @@ public abstract class ImapRequestLineRea
      * @throws DecodingException
      *             If a char can't be read into each array element.
      */
-    public abstract InputStream read(int size) throws DecodingException;
+    public abstract InputStream read(int size, boolean extraCRLF) throws 
DecodingException;
 
     /**
      * Sends a server command continuation request '+' back to the client,
@@ -362,7 +362,7 @@ public abstract class ImapRequestLineRea
         } else {
             ByteArrayOutputStream out = new ByteArrayOutputStream();
             try {
-                IOUtils.copy(consumeLiteral(),out);
+                IOUtils.copy(consumeLiteral(false),out);
             } catch (IOException e) {
                 throw new DecodingException(HumanReadableText.BAD_IO_ENCODING, 
"Bad character encoding",  e);
             }
@@ -372,7 +372,7 @@ public abstract class ImapRequestLineRea
         }
     }
 
-    public InputStream consumeLiteral() throws DecodingException {
+    public InputStream consumeLiteral(boolean extraCRLF) throws 
DecodingException {
         // The 1st character must be '{'
         consumeChar('{');
 
@@ -405,7 +405,7 @@ public abstract class ImapRequestLineRea
         }
 
         final int size = Integer.parseInt(digits.toString());
-        return read(size);
+        return read(size, extraCRLF);
     }
 
     private String decode(final Charset charset, final ByteBuffer buffer)

Modified: 
james/imap/trunk/message/src/main/java/org/apache/james/imap/decode/ImapRequestStreamLineReader.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/message/src/main/java/org/apache/james/imap/decode/ImapRequestStreamLineReader.java?rev=1062720&r1=1062719&r2=1062720&view=diff
==============================================================================
--- 
james/imap/trunk/message/src/main/java/org/apache/james/imap/decode/ImapRequestStreamLineReader.java
 (original)
+++ 
james/imap/trunk/message/src/main/java/org/apache/james/imap/decode/ImapRequestStreamLineReader.java
 Mon Jan 24 10:32:07 2011
@@ -24,6 +24,7 @@ import java.io.InputStream;
 import java.io.OutputStream;
 
 import org.apache.james.imap.api.display.HumanReadableText;
+import org.apache.james.imap.decode.base.EolInputStream;
 import org.apache.james.imap.decode.base.FixedLengthInputStream;
 
 /**
@@ -86,13 +87,17 @@ public class ImapRequestStreamLineReader
      * @throws DecodingException
      *             If a char can't be read into each array element.
      */
-    public InputStream read(int size) throws DecodingException {
+    public InputStream read(int size, boolean extraCRLF) throws 
DecodingException {
 
         // Unset the next char.
         nextSeen = false;
         nextChar = 0;
-        return new FixedLengthInputStream(input, size);
-
+        FixedLengthInputStream in = new FixedLengthInputStream(input, size);
+        if (extraCRLF) {
+           return new EolInputStream(this, in);
+        } else {
+            return in;
+        }
     }
     
     /**

Modified: 
james/imap/trunk/message/src/main/java/org/apache/james/imap/decode/parser/AppendCommandParser.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/message/src/main/java/org/apache/james/imap/decode/parser/AppendCommandParser.java?rev=1062720&r1=1062719&r2=1062720&view=diff
==============================================================================
--- 
james/imap/trunk/message/src/main/java/org/apache/james/imap/decode/parser/AppendCommandParser.java
 (original)
+++ 
james/imap/trunk/message/src/main/java/org/apache/james/imap/decode/parser/AppendCommandParser.java
 Mon Jan 24 10:32:07 2011
@@ -18,6 +18,7 @@
  ****************************************************************/
 package org.apache.james.imap.decode.parser;
 
+import java.io.InputStream;
 import java.util.Date;
 
 import javax.mail.Flags;
@@ -88,9 +89,8 @@ public class AppendCommandParser extends
         }
         request.nextWordChar();
         
-        
         final ImapMessage result = new AppendRequest(command,
-                mailboxName, flags, datetime, request.consumeLiteral(), tag);
+                mailboxName, flags, datetime, request.consumeLiteral(true), 
tag);
         return result;
     }
 }



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

Reply via email to