[exim-cvs] cvs commit: exim/exim-doc/doc-txt ChangeLog exim/…

Top Page
Delete this message
Reply to this message
Author: Philip Hazel
Date:  
To: exim-cvs
Subject: [exim-cvs] cvs commit: exim/exim-doc/doc-txt ChangeLog exim/exim-src ACKNOWLEDGMENTS exim/exim-src/src deliver.c exim/exim-test-orig/AutoTest/confs 604 exim/exim-test-orig/AutoTest/log 604 exim/exi
ph10 2005/03/15 12:27:55 GMT

  Modified files:
    exim-doc/doc-txt     ChangeLog 
    exim-src             ACKNOWLEDGMENTS 
    exim-src/src         deliver.c 
  Added files:
    exim-test-orig/AutoTest/confs 604 
    exim-test-orig/AutoTest/log 604 
    exim-test-orig/AutoTest/scripts 604 
  Log:
  Fix obscure duplicate delivery bug caused by local transport batching
  combined with certain patterns of homonymic redirection.


  Revision  Changes    Path
  1.90      +9 -0      exim/exim-doc/doc-txt/ChangeLog
  1.15      +2 -1      exim/exim-src/ACKNOWLEDGMENTS
  1.8       +2 -0      exim/exim-src/src/deliver.c
  1.1       +61 -0     exim/exim-test-orig/AutoTest/confs/604 (new)
  1.1       +12 -0     exim/exim-test-orig/AutoTest/log/604 (new)
  1.1       +10 -0     exim/exim-test-orig/AutoTest/scripts/604 (new)


  Index: ChangeLog
  ===================================================================
  RCS file: /home/cvs/exim/exim-doc/doc-txt/ChangeLog,v
  retrieving revision 1.89
  retrieving revision 1.90
  diff -u -r1.89 -r1.90
  --- ChangeLog    15 Mar 2005 11:37:21 -0000    1.89
  +++ ChangeLog    15 Mar 2005 12:27:54 -0000    1.90
  @@ -1,4 +1,4 @@
  -$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.89 2005/03/15 11:37:21 ph10 Exp $
  +$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.90 2005/03/15 12:27:54 ph10 Exp $


   Change log file for Exim from version 4.21
   -------------------------------------------
  @@ -30,6 +30,15 @@
          parent to be marked "delivered", so its unseen clone is never tried
          again. For this reason, Exim now forbids the simultaneous setting of
          these two options.
  +
  +PH/04. Change 4.11/85 fixed an obscure bug concerned with addresses that are
  +       redirected to themselves ("homonym" addresses). Read the long ChangeLog
  +       entry if you want to know the details. The fix, however, neglected to
  +       consider the case when local delivery batching is involved. The test for
  +       "previously delivered" was not happening when checking to see if an
  +       address could be batched with a previous (undelivered) one; under
  +       certain circumstances this could lead to multiple deliveries to the same
  +       address. A one-line patch to add the appropriate test fixes the bug.



A note about Exim versions 4.44 and 4.50

  Index: ACKNOWLEDGMENTS
  ===================================================================
  RCS file: /home/cvs/exim/exim-src/ACKNOWLEDGMENTS,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- ACKNOWLEDGMENTS    8 Mar 2005 11:38:21 -0000    1.14
  +++ ACKNOWLEDGMENTS    15 Mar 2005 12:27:54 -0000    1.15
  @@ -1,4 +1,4 @@
  -$Cambridge: exim/exim-src/ACKNOWLEDGMENTS,v 1.14 2005/03/08 11:38:21 ph10 Exp $
  +$Cambridge: exim/exim-src/ACKNOWLEDGMENTS,v 1.15 2005/03/15 12:27:54 ph10 Exp $


EXIM ACKNOWLEDGEMENTS

@@ -20,7 +20,7 @@
Philip Hazel

Lists created: 20 November 2002
-Last updated: 08 March 2005
+Last updated: 15 March 2005


   THE OLD LIST
  @@ -197,6 +197,7 @@
   Stephan Schulz            Patch for $host_data caching error
   Tony Sheen                Log files with datestamped names and auto rollover
   Martin Sluka              Patch for exigrep to include non-message lines
  +Russell Stuart            Diagnosis of obscure batch multiple delivery bug
   Tamas Tevesz              Patch for crypt16() support
   Johan Thelmen             Support for the F-Secure virus scanner
   William Thompson          Suggested patch for acl_smtp_helo


  Index: deliver.c
  ===================================================================
  RCS file: /home/cvs/exim/exim-src/src/deliver.c,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- deliver.c    17 Feb 2005 11:58:25 -0000    1.7
  +++ deliver.c    15 Mar 2005 12:27:54 -0000    1.8
  @@ -1,4 +1,4 @@
  -/* $Cambridge: exim/exim-src/src/deliver.c,v 1.7 2005/02/17 11:58:25 ph10 Exp $ */
  +/* $Cambridge: exim/exim-src/src/deliver.c,v 1.8 2005/03/15 12:27:54 ph10 Exp $ */


   /*************************************************
   *     Exim - an Internet mail transport agent    *
  @@ -2080,6 +2080,7 @@
       same characteristics. These are:


         same transport
  +      not previously delivered (see comment about 50 lines above)
         same local part if the transport's configuration contains $local_part
         same domain if the transport's configuration contains $domain
         same errors address
  @@ -2093,6 +2094,7 @@
         {
         BOOL ok =
           tp == next->transport &&
  +        !previously_transported(next) &&
           (!uses_lp  || Ustrcmp(next->local_part, addr->local_part) == 0) &&
           (!uses_dom || Ustrcmp(next->domain, addr->domain) == 0) &&
           same_strings(next->p.errors_address, addr->p.errors_address) &&


Index: 604
====================================================================
# Exim test configuration 604

# Macros are set externally in order to get the path
# of the Exim that is being tested, and the directory
# in which the test data lives.

exim_path = EXIM_PATH
primary_hostname = myhost.test.ex
spool_directory = DIR/spool

# ----- Main settings -----


# ----- Routers -----

begin routers

  r0: 
    driver = redirect
    local_parts = alwaysdefer
    allow_defer
    data = :defer: Always   


  r1:
    driver = redirect
    local_parts = toplevel
    data = deferfirsttime, second, third  


  r2:
    driver = redirect
    data = $local_part@$domain, alwaysdefer


  r3:
    driver = redirect
    allow_defer
    local_parts = deferfirsttime
    condition = ${if first_delivery}
    data = :defer: Defer the first time


  r4:
    driver = accept
    transport = t1        



# ----- Transports -----

begin transports

  t1:
    driver = appendfile
    file = /dev/null 
    batch_max = 100 



# ----- Retry -----

begin retry

* * F,1h,1s

# End

Index: 604
====================================================================
1999-03-02 09:44:33 10HmaX-0005vi-00 <= ph10@??? U=ph10 P=local S=271
1999-03-02 09:44:33 10HmaX-0005vi-00 == alwaysdefer@??? <toplevel@???> R=r0 defer (-1): Always
1999-03-02 09:44:33 10HmaX-0005vi-00 == deferfirsttime@??? <toplevel@???> R=r3 defer (-1): Defer the first time
1999-03-02 09:44:33 10HmaX-0005vi-00 => second <toplevel@???> R=r4 T=t1
1999-03-02 09:44:33 10HmaX-0005vi-00 -> third <toplevel@???> R=r4 T=t1
1999-03-02 09:44:33 Start queue run: pid=pppp -qf
1999-03-02 09:44:33 10HmaX-0005vi-00 == alwaysdefer@??? <toplevel@???> R=r0 defer (-1): Always
1999-03-02 09:44:33 10HmaX-0005vi-00 => deferfirsttime <toplevel@???> R=r4 T=t1
1999-03-02 09:44:33 End queue run: pid=pppp -qf
1999-03-02 09:44:33 Start queue run: pid=pppp -qf
1999-03-02 09:44:33 10HmaX-0005vi-00 == alwaysdefer@??? <toplevel@???> R=r0 defer (-1): Always
1999-03-02 09:44:33 End queue run: pid=pppp -qf

Index: 604
====================================================================
0 homonymic batched addresses with defer (stop duplicate delivery)
exim -odi toplevel
****
0
exim -qf
****
0
exim -qf
****
no_msglog_check