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]

Reply via email to