Author: rdonkin
Date: Thu Jul 23 11:32:12 2009
New Revision: 797020
URL: http://svn.apache.org/viewvc?rev=797020&view=rev
Log:
JSIEVE-57 Decode dot stuffing https://issues.apache.org/jira/browse/JSIEVE-57
Modified:
james/jsieve/trunk/main/src/main/jjtree/sieve/sieve.jjt
james/jsieve/trunk/main/src/test/java/org/apache/jsieve/MultilineTextTest.java
Modified: james/jsieve/trunk/main/src/main/jjtree/sieve/sieve.jjt
URL:
http://svn.apache.org/viewvc/james/jsieve/trunk/main/src/main/jjtree/sieve/sieve.jjt?rev=797020&r1=797019&r2=797020&view=diff
==============================================================================
--- james/jsieve/trunk/main/src/main/jjtree/sieve/sieve.jjt (original)
+++ james/jsieve/trunk/main/src/main/jjtree/sieve/sieve.jjt Thu Jul 23 11:32:12
2009
@@ -270,6 +270,12 @@
builder.deleteCharAt(builder.length() - 1);
builder.deleteCharAt(builder.length() - 1);
builder.deleteCharAt(builder.length() - 1);
+
+ int nextStuffedDot = builder.indexOf("\n..");
+ while (nextStuffedDot >= 0) {
+ builder.deleteCharAt(nextStuffedDot+1);
+ nextStuffedDot = builder.indexOf("\n..", nextStuffedDot);
+ }
} else {
builder=null;
}
Modified:
james/jsieve/trunk/main/src/test/java/org/apache/jsieve/MultilineTextTest.java
URL:
http://svn.apache.org/viewvc/james/jsieve/trunk/main/src/test/java/org/apache/jsieve/MultilineTextTest.java?rev=797020&r1=797019&r2=797020&view=diff
==============================================================================
---
james/jsieve/trunk/main/src/test/java/org/apache/jsieve/MultilineTextTest.java
(original)
+++
james/jsieve/trunk/main/src/test/java/org/apache/jsieve/MultilineTextTest.java
Thu Jul 23 11:32:12 2009
@@ -52,7 +52,29 @@
ActionReject rejection = runRejectScript(script);
assertEquals(message, rejection.getMessage());
}
-
+
+ /**
+ * Tests that a multiline message is correctly passed when dots within a
line
+ * between the command and the content.
+ */
+ public void testRejectMultilineMessageWithDotsMidline() throws Exception {
+ String message = "This is not.....a love song";
+ String script = "reject text:\n" + message + "\n.\n;";
+ ActionReject rejection = runRejectScript(script);
+ assertEquals(message, rejection.getMessage());
+ }
+
+ /**
+ * Tests that a multiline message with dot stuffing is correctly decoded.
+ */
+ public void testRejectMultilineMessageWithDotStuffing() throws Exception {
+ String lineOne = "This is not\n";
+ String lineTwo = ".A Love Story";
+ String script = "reject text:\n" + lineOne + '.' + lineTwo + "\n.\n;";
+ ActionReject rejection = runRejectScript(script);
+ assertEquals(lineOne + lineTwo, rejection.getMessage());
+ }
+
private ActionReject runRejectScript(String script) throws SieveException,
ParseException {
MailAdapter mail = JUnitUtils.createMail();
JUnitUtils.interpret(mail, script);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]