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]