From: Magnus Holmgren Date: Fri, 16 Feb 2007 22:23:35 +0000 (+0000) Subject: I took action and made $recipients available in local_scan(), X-Git-Tag: exim-4_67~33 X-Git-Url: https://git.exim.org/users/jgh/exim.git/commitdiff_plain/0e20aff9980e70378ce93624a7d7d02a04a1a7a3?ds=inline I took action and made $recipients available in local_scan(), something I asked about a while ago and was told that the only reason it was not available is that nobody asked for it yet. --- diff --git a/doc/doc-txt/ChangeLog b/doc/doc-txt/ChangeLog index 1d894c339..c84608291 100644 --- a/doc/doc-txt/ChangeLog +++ b/doc/doc-txt/ChangeLog @@ -1,4 +1,4 @@ -$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.480 2007/02/14 15:33:40 ph10 Exp $ +$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.481 2007/02/16 22:23:35 magnus Exp $ Change log file for Exim from version 4.21 ------------------------------------------- @@ -109,6 +109,10 @@ SC/02 Applied Daniel Tiefnig's patch to improve the '($parent) =' pattern match. PH/26 Added a "continue" ACL modifier that does nothing, for the benefit of its expansion side effects. +MH/03 Made $recipients available in local_scan(). local_scan() already has + better access to the recipient list through recipients_list[], but + $recipients can be useful in postmaster-provided expansion strings. + Exim version 4.66 ----------------- diff --git a/src/src/expand.c b/src/src/expand.c index afa898205..922d50fac 100644 --- a/src/src/expand.c +++ b/src/src/expand.c @@ -1,4 +1,4 @@ -/* $Cambridge: exim/src/src/expand.c,v 1.82 2007/02/14 14:59:02 ph10 Exp $ */ +/* $Cambridge: exim/src/src/expand.c,v 1.83 2007/02/16 22:23:35 magnus Exp $ */ /************************************************* * Exim - an Internet mail transport agent * @@ -349,7 +349,8 @@ enum { vtype_localpart, /* extract local part from string */ vtype_domain, /* extract domain from string */ vtype_recipients, /* extract recipients from recipients list */ - /* (enabled only during system filtering */ + /* (available only in system filters, ACLs, and */ + /* local_scan()) */ vtype_todbsdin, /* value not used; generate BSD inbox tod */ vtype_tode, /* value not used; generate tod in epoch format */ vtype_todf, /* value not used; generate full tod */ diff --git a/src/src/receive.c b/src/src/receive.c index db86947a4..396246a5b 100644 --- a/src/src/receive.c +++ b/src/src/receive.c @@ -1,4 +1,4 @@ -/* $Cambridge: exim/src/src/receive.c,v 1.33 2007/01/22 16:29:54 ph10 Exp $ */ +/* $Cambridge: exim/src/src/receive.c,v 1.34 2007/02/16 22:23:35 magnus Exp $ */ /************************************************* * Exim - an Internet mail transport agent * @@ -2915,14 +2915,14 @@ $message_body_end can be extracted if needed. Allow $recipients in expansions. deliver_datafile = data_fd; user_msg = NULL; +enable_dollar_recipients = TRUE; + if (recipients_count == 0) { blackholed_by = recipients_discarded? US"MAIL ACL" : US"RCPT ACL"; } else { - enable_dollar_recipients = TRUE; - /* Handle interactive SMTP messages */ if (smtp_input && !smtp_batched_input) @@ -3027,8 +3027,6 @@ else if (deliver_freeze) frozen_by = US"ACL"; /* for later logging */ if (queue_only_policy) queued_by = US"ACL"; - - enable_dollar_recipients = FALSE; } #ifdef WITH_CONTENT_SCAN @@ -3060,6 +3058,8 @@ rc = local_scan(data_fd, &local_scan_data); alarm(0); os_non_restarting_signal(SIGALRM, sigalrm_handler); +enable_dollar_recipients = FALSE; + store_pool = POOL_MAIN; /* In case changed */ DEBUG(D_receive) debug_printf("local_scan() returned %d %s\n", rc, local_scan_data);