ph10 2006/06/30 16:36:08 BST
Modified files:
exim-doc/doc-txt ChangeLog
exim-src/src deliver.c verify.c
exim-test/stdout 0104 0291
Log:
Indicate that duplicates shown in -bt output would not result in an
additional delivery.
Revision Changes Path
1.365 +6 -0 exim/exim-doc/doc-txt/ChangeLog
1.34 +6 -6 exim/exim-src/src/deliver.c
1.37 +17 -1 exim/exim-src/src/verify.c
1.2 +2 -2 exim/exim-test/stdout/0104
1.2 +1 -1 exim/exim-test/stdout/0291
Index: ChangeLog
===================================================================
RCS file: /home/cvs/exim/exim-doc/doc-txt/ChangeLog,v
retrieving revision 1.364
retrieving revision 1.365
diff -u -r1.364 -r1.365
--- ChangeLog 30 Jun 2006 13:57:46 -0000 1.364
+++ ChangeLog 30 Jun 2006 15:36:08 -0000 1.365
@@ -1,4 +1,4 @@
-$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.364 2006/06/30 13:57:46 ph10 Exp $
+$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.365 2006/06/30 15:36:08 ph10 Exp $
Change log file for Exim from version 4.21
-------------------------------------------
@@ -60,6 +60,12 @@
security issue with \' (bugzilla #107). I could not use the
PQescapeStringConn() function, because it needs a PGconn value as one of
its arguments.
+
+PH/08 When testing addresses using -bt, indicate those final addresses that
+ are duplicates that would not cause an additional delivery. At least one
+ person was confused, thinking that -bt output corresponded to deliveries.
+ (Suppressing duplicates isn't a good idea as you lose the information
+ about possibly different redirections that led to the duplicates.)
Exim version 4.62
Index: deliver.c
===================================================================
RCS file: /home/cvs/exim/exim-src/src/deliver.c,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -r1.33 -r1.34
--- deliver.c 30 Jun 2006 14:14:46 -0000 1.33
+++ deliver.c 30 Jun 2006 15:36:08 -0000 1.34
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/deliver.c,v 1.33 2006/06/30 14:14:46 ph10 Exp $ */
+/* $Cambridge: exim/exim-src/src/deliver.c,v 1.34 2006/06/30 15:36:08 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -4372,13 +4372,13 @@
/* This function was introduced when the test for duplicate addresses that are
not pipes, files, or autoreplies was moved from the middle of routing to when
routing was complete. That was to fix obscure cases when the routing history
-affects the subsequent routing of identical addresses.
+affects the subsequent routing of identical addresses. This function is called
+after routing, to check that the final routed addresses are not duplicates.
-This function is called after routing, to check that the final routed addresses
-are not duplicates. If we detect a duplicate, we remember what it is a
-duplicate of. Note that pipe, file, and autoreply de-duplication is handled
-during routing, so we must leave such "addresses" alone here, as otherwise they
-will incorrectly be discarded.
+If we detect a duplicate, we remember what it is a duplicate of. Note that
+pipe, file, and autoreply de-duplication is handled during routing, so we must
+leave such "addresses" alone here, as otherwise they will incorrectly be
+discarded.
Argument: address of list anchor
Returns: nothing
Index: verify.c
===================================================================
RCS file: /home/cvs/exim/exim-src/src/verify.c,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -r1.36 -r1.37
--- verify.c 4 Apr 2006 11:18:31 -0000 1.36
+++ verify.c 30 Jun 2006 15:36:08 -0000 1.37
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/verify.c,v 1.36 2006/04/04 11:18:31 ph10 Exp $ */
+/* $Cambridge: exim/exim-src/src/verify.c,v 1.37 2006/06/30 15:36:08 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -1262,9 +1262,12 @@
discarded, usually because of the use of :blackhole: in an alias file. */
if (allok && addr_local == NULL && addr_remote == NULL)
+ {
fprintf(f, "mail to %s is discarded\n", address);
+ return yield;
+ }
-else for (addr_list = addr_local, i = 0; i < 2; addr_list = addr_remote, i++)
+for (addr_list = addr_local, i = 0; i < 2; addr_list = addr_remote, i++)
{
while (addr_list != NULL)
{
@@ -1277,6 +1280,19 @@
if(addr->p.srs_sender)
fprintf(f, " [srs = %s]", addr->p.srs_sender);
#endif
+
+ /* If the address is a duplicate, show something about it. */
+
+ if (!testflag(addr, af_pfr))
+ {
+ tree_node *tnode;
+ if ((tnode = tree_search(tree_duplicates, addr->unique)) != NULL)
+ fprintf(f, " [duplicate, would not be delivered]");
+ else tree_add_duplicate(addr->unique, addr);
+ }
+
+ /* Now show its parents */
+
while (p != NULL)
{
fprintf(f, "\n <-- %s", p->address);
Index: 0104
===================================================================
RCS file: /home/cvs/exim/exim-test/stdout/0104,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- 0104 7 Feb 2006 10:47:37 -0000 1.1
+++ 0104 30 Jun 2006 15:36:08 -0000 1.2
@@ -1,6 +1,6 @@
xxx@???
router = all, transport = appendfile
-xxx@???
+xxx@??? [duplicate, would not be delivered]
router = all, transport = appendfile
-xxx@???
+xxx@??? [duplicate, would not be delivered]
router = all, transport = appendfile
Index: 0291
===================================================================
RCS file: /home/cvs/exim/exim-test/stdout/0291,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- 0291 7 Feb 2006 10:47:37 -0000 1.1
+++ 0291 30 Jun 2006 15:36:08 -0000 1.2
@@ -2,7 +2,7 @@
<-- b@one
<-- a@one
router = accept, transport = unset
-c@one
+c@one [duplicate, would not be delivered]
<-- b@one
router = accept, transport = unset
b@two