Author: noel
Date: Wed May 4 19:23:42 2005
New Revision: 168238
URL: http://svn.apache.org/viewcvs?rev=168238&view=rev
Log:
revision 109187 introduced a bug where if we had a real Return-Path header its
value would not be the first in the String[]. This tries to eliminate that
problem. We should still test to see if this hack is necessary at all, or if
InternetHeaders.setHeader("Return-Path", <value>) is smart enough in JavaMail
1.3.2 to put the header at the top, instead of in the middle.
Modified:
james/server/branches/merge_v2_and_trunk/src/java/org/apache/james/core/MimeMessageWrapper.java
Modified:
james/server/branches/merge_v2_and_trunk/src/java/org/apache/james/core/MimeMessageWrapper.java
URL:
http://svn.apache.org/viewcvs/james/server/branches/merge_v2_and_trunk/src/java/org/apache/james/core/MimeMessageWrapper.java?rev=168238&r1=168237&r2=168238&view=diff
==============================================================================
---
james/server/branches/merge_v2_and_trunk/src/java/org/apache/james/core/MimeMessageWrapper.java
(original)
+++
james/server/branches/merge_v2_and_trunk/src/java/org/apache/james/core/MimeMessageWrapper.java
Wed May 4 19:23:42 2005
@@ -104,9 +104,23 @@
}
private synchronized MailHeaders loadHeaders(InputStream is) throws
MessagingException {
+
+ /* InternetHeaders can be a bit awkward to work with due to
+ * its own internal handling of header order. This hack may
+ * not always be necessary, but for now we are trying to
+ * ensure that there is a Return-Path header, even if just a
+ * placeholder, so that later, e.g., in LocalDelivery, when we
+ * call setHeader, it will remove any other Return-Path
+ * headers, and ensure that ours is on the top. addHeader
+ * handles header order, but not setHeader. This may change in
+ * future JavaMail. But if there are other Return-Path header
+ * values, let's drop our placeholder. */
+
headers = new MailHeaders(new
ByteArrayInputStream((RFC2822Headers.RETURN_PATH + ":
placeholder").getBytes()));
headers.setHeader(RFC2822Headers.RETURN_PATH, null);
headers.load(is);
+ String[] returnPathHeaders =
headers.getHeader(RFC2822Headers.RETURN_PATH);
+ if (returnPathHeaders.length > 1)
headers.setHeader(RFC2822Headers.RETURN_PATH, returnPathHeaders[1]);
return headers;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]