From: Jeremy Harris Date: Sun, 21 Jul 2013 16:15:21 +0000 (+0100) Subject: Merge branch 'master' into transp_logging_1031 X-Git-Url: https://git.exim.org/users/jgh/exim.git/commitdiff_plain/b1068abad9c5e5f7046caaf632fd2c71ca702020?hp=71da6ae46ebda11989094def47c4145e6286c67a Merge branch 'master' into transp_logging_1031 Conflicts: src/src/readconf.c --- diff --git a/.gitignore b/.gitignore index 094ad9696..478c603cc 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ exim-packaging-* 0*.patch *.orig *.rej +.gdb_history diff --git a/src/src/exim.c b/src/src/exim.c index 3f5e0e153..1d3d32723 100644 --- a/src/src/exim.c +++ b/src/src/exim.c @@ -4273,13 +4273,12 @@ if (msg_action_arg > 0 && msg_action != MSG_DELIVER && msg_action != MSG_LOAD) exit(yield); } -/* All the modes below here require the remaining configuration sections -to be read, except that we can skip over the ACL setting when delivering -specific messages, or doing a queue run. (For various testing cases we could -skip too, but as they are rare, it doesn't really matter.) The argument is TRUE -for skipping. */ +/* We used to set up here to skip reading the ACL section, on + (msg_action_arg > 0 || (queue_interval == 0 && !daemon_listen) +Now, since the intro of the ${acl } expansion, ACL definitions may be +needed in transports so we lost the optimisation. */ -readconf_rest(msg_action_arg > 0 || (queue_interval == 0 && !daemon_listen)); +readconf_rest(); /* The configuration data will have been read into POOL_PERM because we won't ever want to reset back past it. Change the current pool to POOL_MAIN. In fact, diff --git a/src/src/functions.h b/src/src/functions.h index e76cd140e..d381b569a 100644 --- a/src/src/functions.h +++ b/src/src/functions.h @@ -255,7 +255,7 @@ extern void readconf_print(uschar *, uschar *, BOOL); extern uschar *readconf_printtime(int); extern uschar *readconf_readname(uschar *, int, uschar *); extern int readconf_readtime(uschar *, int, BOOL); -extern void readconf_rest(BOOL); +extern void readconf_rest(); extern uschar *readconf_retry_error(uschar *, uschar *, int *, int *); extern void read_message_body(BOOL); extern void receive_bomb_out(uschar *, uschar *); diff --git a/src/src/readconf.c b/src/src/readconf.c index b1b26ff67..207b3693d 100644 --- a/src/src/readconf.c +++ b/src/src/readconf.c @@ -3972,30 +3972,15 @@ return acl_line; /* Now the main function: -Arguments: - skip TRUE when this Exim process is doing something that will - not need the ACL data - +Arguments: none Returns: nothing */ static void -readconf_acl(BOOL skip) +readconf_acl(void) { uschar *p; -/* Not receiving messages, don't need to parse the ACL data */ - -/*XXX need to make this more selective */ -#ifndef EXPERIMENTAL_DBL -if (skip) - { - DEBUG(D_acl) debug_printf("skipping ACL configuration - not needed\n"); - while ((p = get_config_line()) != NULL); - return; - } -#endif - /* Read each ACL and add it into the tree. Macro (re)definitions are allowed between ACLs. */ @@ -4129,7 +4114,7 @@ while(next_section[0] != 0) switch(mid) { - case 0: readconf_acl(skip_acl); break; + case 0: readconf_acl(); break; case 1: auths_init(); break; case 2: local_scan_init(); break; case 3: readconf_retries(); break; diff --git a/test/confs/0218 b/test/confs/0218 index a585870ef..4458e1846 100644 --- a/test/confs/0218 +++ b/test/confs/0218 @@ -19,6 +19,13 @@ queue_run_in_order queue_only +# ----- ACLs ---- + +begin acl + +expand_check: + accept message = ACL + # ----- Routers ----- begin routers @@ -30,11 +37,13 @@ bounce: data = :fail: just discard retry_use_local_part senders = : + debug_print = R: $router_name (${acl {expand_check}}) client: driver = accept retry_use_local_part transport = send_to_server + debug_print = R: $router_name (${acl {expand_check}}) # ----- Transports ----- @@ -47,6 +56,7 @@ send_to_server: command_timeout = 1s hosts = 127.0.0.1 port = PORT_S + debug_print = T: $transport_name (${acl {expand_check}}) # ----- Retry ----- diff --git a/test/scripts/0000-Basic/0002 b/test/scripts/0000-Basic/0002 index e35e4a082..1ea5c4a48 100644 --- a/test/scripts/0000-Basic/0002 +++ b/test/scripts/0000-Basic/0002 @@ -215,6 +215,15 @@ quote_local_part: ${quote_local_part:x:y} quote_local_part: ${quote_local_part:ab\cd"ef} quote_local_part: ${quote_local_part:} rxquote:${rxquote:aZ09_,-Q} ${rxquote:ab*cd} ${rxquote:ab\cd"ef} +hexquote: ${hexquote:\ + \001\002\003\004\005\006\007 \010\011\012\013\014\015\016\017 \ +\020\021\022\023\024\025\026\027 \030\031\032\033\034\035\036\037 \ +\040\041\042\043\044\045\046\047 \050\051\052\053\054\055\056\057 \ +\060\061\062\063\064\065\066\067 \070\071\072\073\074\075\076\077 \ +\100\101\102\103\104\105\106\107 \110\111\112\113\114\115\116\117 \ +\120\121\122\123\124\125\126\127 \130\131\132\133\134\135\136\137 \ +\140\141\142\143\144\145\146\147 \150\151\152\153\154\155\156\157 \ +\160\161\162\163\164\165\166\167 \170\171\172\173\174\175\176\177} substr: ${substr_3_2:rhubarb} ${s_-5_2:1234567} ${s_-5_2:12} ${s_-3_2:12} substr: ${s_3:rhubarb} ${s_-2:rhubarb} substr: ${s_1:} diff --git a/test/stderr/0021 b/test/stderr/0021 index 4f43e05c9..64c72d2bf 100644 --- a/test/stderr/0021 +++ b/test/stderr/0021 @@ -176,7 +176,6 @@ Exim version x.yz .... configuration file is TESTSUITE/test-config trusted user admin user -skipping ACL configuration - not needed x in "!bad"? yes (end of list) LOG: MAIN => x R=accept T=appendfile diff --git a/test/stderr/0218 b/test/stderr/0218 index 67ae81ee6..bf0176256 100644 --- a/test/stderr/0218 +++ b/test/stderr/0218 @@ -6,9 +6,15 @@ LOG: queue_run MAIN Start queue run: pid=pppp -qq queue running combined directories delivering 10HmaX-0005vi-00 (queue run pid ppppp) +R: client (ACL) +T: send_to_server (ACL) delivering 10HmaY-0005vi-00 (queue run pid ppppp) +R: client (ACL) +T: send_to_server (ACL) queue running combined directories delivering 10HmaX-0005vi-00 (queue run pid ppppp) +R: client (ACL) +T: send_to_server (ACL) Connecting to 127.0.0.1 [127.0.0.1]:1224 ... connected SMTP<< 220 Server ready SMTP>> EHLO myhost.test.ex @@ -31,6 +37,8 @@ configuration file is TESTSUITE/test-config trusted user admin user delivering 10HmaY-0005vi-00 (queue run pid ppppp) +R: client (ACL) +T: send_to_server (ACL) SMTP>> MAIL FROM: SMTP>> RCPT TO: SMTP>> DATA @@ -56,9 +64,15 @@ LOG: queue_run MAIN Start queue run: pid=pppp -qq queue running combined directories delivering 10HmaZ-0005vi-00 (queue run pid ppppp) +R: client (ACL) +T: send_to_server (ACL) delivering 10HmbA-0005vi-00 (queue run pid ppppp) +R: client (ACL) +T: send_to_server (ACL) queue running combined directories delivering 10HmaZ-0005vi-00 (queue run pid ppppp) +R: client (ACL) +T: send_to_server (ACL) Connecting to 127.0.0.1 [127.0.0.1]:1224 ... connected SMTP<< 220 Server ready SMTP>> EHLO myhost.test.ex @@ -83,6 +97,8 @@ LOG: MAIN LOG: MAIN Completed delivering 10HmbA-0005vi-00 (queue run pid ppppp) +R: client (ACL) +T: send_to_server (ACL) Connecting to 127.0.0.1 [127.0.0.1]:1224 ... failed: Connection refused LOG: MAIN 127.0.0.1 [127.0.0.1] Connection refused @@ -97,7 +113,10 @@ admin user LOG: queue_run MAIN Start queue run: pid=pppp -qqf delivering 10HmbA-0005vi-00 (queue run pid ppppp) +R: client (ACL) +T: send_to_server (ACL) delivering 10HmbB-0005vi-00 (queue run pid ppppp) +R: bounce (ACL) LOG: MAIN ** CALLER@test.ex F=<> R=bounce: just discard LOG: MAIN @@ -105,7 +124,11 @@ LOG: MAIN LOG: MAIN Completed delivering 10HmbC-0005vi-00 (queue run pid ppppp) +R: client (ACL) +T: send_to_server (ACL) delivering 10HmbA-0005vi-00 (queue run pid ppppp) +R: client (ACL) +T: send_to_server (ACL) Connecting to 127.0.0.1 [127.0.0.1]:1224 ... connected SMTP<< 220 Server ready SMTP>> EHLO myhost.test.ex @@ -135,6 +158,8 @@ configuration file is TESTSUITE/test-config trusted user admin user delivering 10HmbC-0005vi-00 (queue run pid ppppp) +R: client (ACL) +T: send_to_server (ACL) SMTP>> MAIL FROM: SMTP>> RCPT TO: SMTP>> DATA diff --git a/test/stderr/2600 b/test/stderr/2600 index 2df984486..57026026d 100644 --- a/test/stderr/2600 +++ b/test/stderr/2600 @@ -319,7 +319,6 @@ changed uid/gid: forcing real = effective configuration file is TESTSUITE/test-config trusted user admin user -skipping ACL configuration - not needed seeking password data for user "CALLER": cache not available getpwnam() succeeded uid=CALLER_UID gid=CALLER_GID set_process_info: pppp delivering specified messages diff --git a/test/stderr/5400 b/test/stderr/5400 index bc3dba5dd..73934dd92 100644 --- a/test/stderr/5400 +++ b/test/stderr/5400 @@ -125,7 +125,6 @@ Exim version x.yz .... configuration file is TESTSUITE/test-config trusted user admin user -skipping ACL configuration - not needed >>>>>>>>>>>>>>>> Remote deliveries >>>>>>>>>>>>>>>> --------> usery@domain.com <-------- smtp transport entered diff --git a/test/stdout/0002 b/test/stdout/0002 index 61144f157..35f1bb99b 100644 --- a/test/stdout/0002 +++ b/test/stdout/0002 @@ -196,6 +196,7 @@ > quote_local_part: "abcd\"ef" > quote_local_part: "" > rxquote:aZ09\_\,\-Q ab\*cd abcd\"ef +> hexquote: \x01\x02\x03\x04\x05\x06\x07\x20\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x20\x10\x11\x12\x13\x14\x15\x16\x17\x20\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20\x20!"#$%&'\x20()*+,-./\x2001234567\x2089:;<=>?\x20@ABCDEFG\x20HIJKLMNO\x20PQRSTUVW\x20XYZ[\]^_\x20`abcdefg\x20hijklmno\x20pqrstuvw\x20xyz{|}~\x7f > substr: ba 34 1 > substr: barb rhuba > substr: