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]

Reply via email to