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]