Change $reply_address to use raw headers, to retain syntactic validity
authorPhilip Hazel <ph10@hermes.cam.ac.uk>
Mon, 12 Dec 2005 11:02:44 +0000 (11:02 +0000)
committerPhilip Hazel <ph10@hermes.cam.ac.uk>
Mon, 12 Dec 2005 11:02:44 +0000 (11:02 +0000)
in created To: lines.

doc/doc-txt/ChangeLog
doc/doc-txt/NewStuff
src/src/expand.c

index c5dd5dae9d3ac3ccee49555257b631d80e4494f5..e38a7f95edfe72ea7958019f550127fbd92f359f 100644 (file)
@@ -1,4 +1,4 @@
-$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.271 2005/12/06 10:25:59 ph10 Exp $
+$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.272 2005/12/12 11:02:44 ph10 Exp $
 
 Change log file for Exim from version 4.21
 -------------------------------------------
 
 Change log file for Exim from version 4.21
 -------------------------------------------
@@ -19,6 +19,13 @@ PH/02 The ipliteral router was not recognizing addresses of the form user@
 
 PH/03 Added disable_ipv6.
 
 
 PH/03 Added disable_ipv6.
 
+PH/04 Changed $reply_address to use the raw form of the headers instead of the
+      decoded form, because it is most often used to construct To: headers
+      lines in autoreplies, and the decoded form may well be syntactically
+      invalid. However, $reply_address has leading white space removed, and all
+      newlines turned into spaces so that the autoreply transport does not
+      grumble.
+
 
 Exim version 4.60
 -----------------
 
 Exim version 4.60
 -----------------
index 604e59a9abc651f69a4a131e2e4ce7d0b6a71875..4d0863d7f063766605e7c11530465a974fb04089 100644 (file)
@@ -1,4 +1,4 @@
-$Cambridge: exim/doc/doc-txt/NewStuff,v 1.78 2005/12/06 10:25:59 ph10 Exp $
+$Cambridge: exim/doc/doc-txt/NewStuff,v 1.79 2005/12/12 11:02:44 ph10 Exp $
 
 New Features in Exim
 --------------------
 
 New Features in Exim
 --------------------
@@ -13,10 +13,10 @@ Version 4.61
 
 PH/01 There is a new global option called disable_ipv6, which does exactly what
       its name implies. If set true, even if the Exim binary has IPv6 support,
 
 PH/01 There is a new global option called disable_ipv6, which does exactly what
       its name implies. If set true, even if the Exim binary has IPv6 support,
-      no IPv6 activities take place. AAAA records are never looked up as a for
-      host names given in manual routing data or elsewhere. AAAA records that
-      are received from the DNS as additional data for MX records are ignored.
-      Any IPv6 addresses that are listed in local_interfaces, manualroute route
+      no IPv6 activities take place. AAAA records are never looked up for host
+      names given in manual routing data or elsewhere. AAAA records that are
+      received from the DNS as additional data for MX records are ignored. Any
+      IPv6 addresses that are listed in local_interfaces, manualroute route
       data, etc. are also ignored. If IP literals are enabled, the ipliteral
       router declines to handle IPv6 literal addresses.
 
       data, etc. are also ignored. If IP literals are enabled, the ipliteral
       router declines to handle IPv6 literal addresses.
 
index 9de325d46d9b3f58733f9c34e8d9b0e6fe5abff0..8fdc2de0984f08fb80475b3b4a9f25780d1bd95e 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/expand.c,v 1.48 2005/12/06 10:25:59 ph10 Exp $ */
+/* $Cambridge: exim/src/src/expand.c,v 1.49 2005/12/12 11:02:44 ph10 Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -1426,12 +1426,18 @@ while (last > first)
     return tod_stamp(tod_log_datestamp);
 
     case vtype_reply:                          /* Get reply address */
     return tod_stamp(tod_log_datestamp);
 
     case vtype_reply:                          /* Get reply address */
-    s = find_header(US"reply-to:", exists_only, newsize, FALSE,
+    s = find_header(US"reply-to:", exists_only, newsize, TRUE,
       headers_charset);
     if (s == NULL || *s == 0)
       {
       *newsize = 0;                            /* For the *s==0 case */
       headers_charset);
     if (s == NULL || *s == 0)
       {
       *newsize = 0;                            /* For the *s==0 case */
-      s = find_header(US"from:", exists_only, newsize, FALSE, headers_charset);
+      s = find_header(US"from:", exists_only, newsize, TRUE, headers_charset);
+      }
+    if (s != NULL)
+      {
+      uschar *t;
+      while (isspace(*s)) s++;
+      for (t = s; *t != 0; t++) if (*t == '\n') *t = ' ';
       }
     return (s == NULL)? US"" : s;
 
       }
     return (s == NULL)? US"" : s;