Fix logging bug when two addresses to the same host list go to different
authorPhilip Hazel <ph10@hermes.cam.ac.uk>
Wed, 6 Apr 2005 15:26:52 +0000 (15:26 +0000)
committerPhilip Hazel <ph10@hermes.cam.ac.uk>
Wed, 6 Apr 2005 15:26:52 +0000 (15:26 +0000)
hosts with different TLS usage within the same delivery process.

doc/doc-txt/ChangeLog
src/src/transports/smtp.c

index 7ac876c15951580e139c5f2552cfa2fe0f23418f..4d7dd8517bf83a0c0e419c5278f138c891db782e 100644 (file)
@@ -1,4 +1,4 @@
-$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.116 2005/04/06 14:40:23 ph10 Exp $
+$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.117 2005/04/06 15:26:52 ph10 Exp $
 
 Change log file for Exim from version 4.21
 -------------------------------------------
@@ -179,6 +179,16 @@ PH/28 Modified OS/os.c-Linux with
 PH/29 Installed patch from the Sieve maintainer that adds the options
       sieve_useraddress and sieve_subaddress to the redirect router.
 
+PH/30 In these circumstances:
+        . Two addresses routed to the same list of hosts;
+        . First host does not offer TLS;
+        . First host accepts first address;
+        . First host gives temporary error to second address;
+        . Second host offers TLS and a TLS session is established;
+        . Second host accepts second address.
+      Exim incorrectly logged both deliveries with the TLS parameters (cipher
+      and peerdn, if requested) that were in fact used only for the second
+      address.
 
 
 A note about Exim versions 4.44 and 4.50
index edcdc409d799fe0482ae8059c572d3e23fdf0aec..91410332d095641b2f80114c08845b843b2ad51b 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/transports/smtp.c,v 1.8 2005/03/22 15:45:35 ph10 Exp $ */
+/* $Cambridge: exim/src/src/transports/smtp.c,v 1.9 2005/04/06 15:26:52 ph10 Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -1020,8 +1020,11 @@ if (tls_offered && !suppress_tls &&
 
     for (addr = addrlist; addr != NULL; addr = addr->next)
       {
-      addr->cipher = tls_cipher;
-      addr->peerdn = tls_peerdn;
+      if (addr->transport_return == PENDING_DEFER)
+        {
+        addr->cipher = tls_cipher;
+        addr->peerdn = tls_peerdn;
+        }
       }
     }
   }