fanf2 2008/02/06 18:57:46 GMT
Modified files:
exim-doc/doc-txt ChangeLog
exim-src/src route.c
Log:
When checking the local_parts router precondition after a
local_part_suffix or local_part_prefix option, Exim now does not
use the address's named list lookup cache, since this contains
cached lookups for the whole local part. Fixes: #615
Revision Changes Path
1.543 +5 -0 exim/exim-doc/doc-txt/ChangeLog
1.13 +8 -2 exim/exim-src/src/route.c
Index: ChangeLog
===================================================================
RCS file: /home/cvs/exim/exim-doc/doc-txt/ChangeLog,v
retrieving revision 1.542
retrieving revision 1.543
diff -u -r1.542 -r1.543
--- ChangeLog 6 Feb 2008 12:44:58 -0000 1.542
+++ ChangeLog 6 Feb 2008 18:57:46 -0000 1.543
@@ -1,4 +1,4 @@
-$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.542 2008/02/06 12:44:58 nm4 Exp $
+$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.543 2008/02/06 18:57:46 fanf2 Exp $
Change log file for Exim from version 4.21
-------------------------------------------
@@ -24,6 +24,11 @@
NM/04 Bugzilla 667: close socket used by dovecot authenticator
+TF/03 Bugzilla 615: When checking the local_parts router precondition
+ after a local_part_suffix or local_part_prefix option, Exim now
+ does not use the address's named list lookup cache, since this
+ contains cached lookups for the whole local part.
+
Exim version 4.69
-----------------
Index: route.c
===================================================================
RCS file: /home/cvs/exim/exim-src/src/route.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- route.c 8 Jan 2007 10:50:18 -0000 1.12
+++ route.c 6 Feb 2008 18:57:46 -0000 1.13
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/route.c,v 1.12 2007/01/08 10:50:18 ph10 Exp $ */
+/* $Cambridge: exim/exim-src/src/route.c,v 1.13 2008/02/06 18:57:46 fanf2 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -825,6 +825,7 @@
{
int rc;
uschar *check_local_part;
+unsigned int *localpart_cache;
/* Reset variables to hold a home directory and data from lookup of a domain or
local part, and ensure search_find_defer is unset, in case there aren't any
@@ -885,12 +886,17 @@
caseful local part, so that +caseful can restore it, even if this router is
handling local parts caselessly. However, we can't just pass cc_local_part,
because that doesn't have the prefix or suffix stripped. A bit of massaging is
-required. */
+required. Also, we only use the match cache for local parts that have not had
+a prefix or suffix stripped. */
if (addr->prefix == NULL && addr->suffix == NULL)
+ {
+ localpart_cache = addr->localpart_cache;
check_local_part = addr->cc_local_part;
+ }
else
{
+ localpart_cache = NULL;
check_local_part = string_copy(addr->cc_local_part);
if (addr->prefix != NULL)
check_local_part += Ustrlen(addr->prefix);
@@ -899,7 +905,7 @@
}
if ((rc = route_check_dls(r->name, US"local_parts", r->local_parts,
- &localpartlist_anchor, addr->localpart_cache, MCL_LOCALPART,
+ &localpartlist_anchor, localpart_cache, MCL_LOCALPART,
check_local_part, &deliver_localpart_data, !r->caseful_local_part,
perror)) != OK)
return rc;