errors_to on a router was being ignored for bounce messages.
authorPhilip Hazel <ph10@hermes.cam.ac.uk>
Thu, 18 Nov 2004 10:35:18 +0000 (10:35 +0000)
committerPhilip Hazel <ph10@hermes.cam.ac.uk>
Thu, 18 Nov 2004 10:35:18 +0000 (10:35 +0000)
doc/doc-txt/ChangeLog
src/src/deliver.c

index 59bc0b9..8eb25ac 100644 (file)
@@ -1,4 +1,4 @@
-$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.31 2004/11/17 16:12:26 ph10 Exp $
+$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.32 2004/11/18 10:35:18 ph10 Exp $
 
 Change log file for Exim from version 4.21
 -------------------------------------------
@@ -134,6 +134,10 @@ Exim version 4.44
     is omitted, a false condition yields an empty string. This makes it less
     cumbersome to write custom ACL and router conditions.
 
+34. Failure to deliver a bounce message always caused it to be frozen, even if
+    there was an errors_to setting on the router. The errors_to setting is now
+    respected.
+
 
 Exim version 4.43
 -----------------
index 741d7b7..2bf141c 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/deliver.c,v 1.1 2004/10/07 10:39:01 ph10 Exp $ */
+/* $Cambridge: exim/src/src/deliver.c,v 1.2 2004/11/18 10:35:19 ph10 Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -1046,12 +1046,15 @@ else
     setflag(addr, af_ignore_error);
 
   /* Freeze the message if requested, or if this is a bounce message (or other
-  message with null sender). However, don't freeze if errors are being ignored.
-  The actual code to ignore occurs later, instead of sending a message. Logging
-  of freezing occurs later, just before writing the -H file. */
+  message with null sender) and this address does not have its own errors
+  address. However, don't freeze if errors are being ignored. The actual code
+  to ignore occurs later, instead of sending a message. Logging of freezing
+  occurs later, just before writing the -H file. */
 
   if (!testflag(addr, af_ignore_error) &&
-      (addr->special_action == SPECIAL_FREEZE || sender_address[0] == 0))
+      (addr->special_action == SPECIAL_FREEZE ||
+        (sender_address[0] == 0 && addr->p.errors_address == NULL)
+      ))
     {
     frozen_info = (addr->special_action == SPECIAL_FREEZE)? US"" :
       (sender_local && !local_error_message)?