I took action and made $recipients available in local_scan(),
authorMagnus Holmgren <holmgren@lysator.liu.se>
Fri, 16 Feb 2007 22:23:35 +0000 (22:23 +0000)
committerMagnus Holmgren <holmgren@lysator.liu.se>
Fri, 16 Feb 2007 22:23:35 +0000 (22:23 +0000)
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.

doc/doc-txt/ChangeLog
src/src/expand.c
src/src/receive.c

index 1d894c33982cc6370e161e61e5778e43f36e9f19..c84608291ef5428a2bf779ac73f55da4f3b8b67d 100644 (file)
@@ -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
 -----------------
index afa898205331db1496567457323144fb379bd6fe..922d50faceb4dcb5c72dad41562a7706c508483e 100644 (file)
@@ -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 */
index db86947a46f3c4767a213b19d658e52f018668d3..396246a5bd27955034e64445b6e8971545e8e54b 100644 (file)
@@ -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);