Author: bago
Date: Tue Jul 15 02:11:23 2008
New Revision: 676840

URL: http://svn.apache.org/viewvc?rev=676840&view=rev
Log:
Make sure outer boundaries are always recognized when parsing nested content 
(MIME4J-56)
This introduce double bufferings but at least provide RFC compliant behaviour.
Also updated "missing-inner-boundary.msg" expected output to what Niklas 
suggested (corresponding to what RFC mandates).

Modified:
    
james/mime4j/branches/streams-refactoring/src/main/java/org/apache/james/mime4j/MimeEntity.java
    
james/mime4j/branches/streams-refactoring/src/test/resources/testmsgs/missing-inner-boundary.xml
    
james/mime4j/branches/streams-refactoring/src/test/resources/testmsgs/missing-inner-boundary_decoded.xml

Modified: 
james/mime4j/branches/streams-refactoring/src/main/java/org/apache/james/mime4j/MimeEntity.java
URL: 
http://svn.apache.org/viewvc/james/mime4j/branches/streams-refactoring/src/main/java/org/apache/james/mime4j/MimeEntity.java?rev=676840&r1=676839&r2=676840&view=diff
==============================================================================
--- 
james/mime4j/branches/streams-refactoring/src/main/java/org/apache/james/mime4j/MimeEntity.java
 (original)
+++ 
james/mime4j/branches/streams-refactoring/src/main/java/org/apache/james/mime4j/MimeEntity.java
 Tue Jul 15 02:11:23 2008
@@ -122,6 +122,7 @@
                 clearMimeStream();
                 state = EntityStates.T_END_MULTIPART;
             } else {
+                clearMimeStream();
                 createMimeStream();
                 state = T_IN_BODYPART;
                 return nextMimeEntity();
@@ -133,6 +134,7 @@
                 monitor(Event.MIME_BODY_PREMATURE_END);
             } else {
                 if (!mimeStream.isLastPart()) {
+                    clearMimeStream();
                     createMimeStream();
                     state = T_IN_BODYPART;
                     return nextMimeEntity();
@@ -160,7 +162,11 @@
     }
 
     private void createMimeStream() throws IOException {
-        mimeStream = new MimeBoundaryInputStream(inbuffer, body.getBoundary());
+        if (mimeStream != null) {
+            mimeStream = new MimeBoundaryInputStream(new 
InputBuffer(mimeStream, 4 * 1024), body.getBoundary());
+        } else {
+            mimeStream = new MimeBoundaryInputStream(inbuffer, 
body.getBoundary());
+        }
         dataStream = new BufferingInputStreamAdaptor(mimeStream); 
         // If multipart message is embedded into another multipart message
         // make sure to reset parent's mime stream

Modified: 
james/mime4j/branches/streams-refactoring/src/test/resources/testmsgs/missing-inner-boundary.xml
URL: 
http://svn.apache.org/viewvc/james/mime4j/branches/streams-refactoring/src/test/resources/testmsgs/missing-inner-boundary.xml?rev=676840&r1=676839&r2=676840&view=diff
==============================================================================
--- 
james/mime4j/branches/streams-refactoring/src/test/resources/testmsgs/missing-inner-boundary.xml
 (original)
+++ 
james/mime4j/branches/streams-refactoring/src/test/resources/testmsgs/missing-inner-boundary.xml
 Tue Jul 15 02:11:23 2008
@@ -24,9 +24,6 @@
 <multipart>
 <preamble>
 AAA
-
---outer-boundary--
-Outer epilouge
 </preamble>
 <body-part>
 <header>
@@ -39,6 +36,7 @@
 </multipart>
 </body-part>
 <epilogue>
+Outer epilouge
 </epilogue>
 </multipart>
 </message>

Modified: 
james/mime4j/branches/streams-refactoring/src/test/resources/testmsgs/missing-inner-boundary_decoded.xml
URL: 
http://svn.apache.org/viewvc/james/mime4j/branches/streams-refactoring/src/test/resources/testmsgs/missing-inner-boundary_decoded.xml?rev=676840&r1=676839&r2=676840&view=diff
==============================================================================
--- 
james/mime4j/branches/streams-refactoring/src/test/resources/testmsgs/missing-inner-boundary_decoded.xml
 (original)
+++ 
james/mime4j/branches/streams-refactoring/src/test/resources/testmsgs/missing-inner-boundary_decoded.xml
 Tue Jul 15 02:11:23 2008
@@ -22,9 +22,6 @@
 <multipart>
 <preamble>
 AAA
-
---outer-boundary--
-Outer epilouge
 </preamble>
 <body-part>
 <header>
@@ -36,6 +33,7 @@
 </multipart>
 </body-part>
 <epilogue>
+Outer epilouge
 </epilogue>
 </multipart>
 </message>



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to