ph10 2007/02/06 14:49:14 GMT
Modified files:
exim-doc/doc-txt ChangeLog NewStuff OptionLists.txt
exim-src/src/transports smtp.c smtp.h
exim-test/confs 0217
exim-test/log 0217
exim-test/scripts/0000-Basic 0217
exim-test/stderr 0217
exim-test/stdout 0217
Log:
Implemented hosts_avoid_pipelining in the smtp transport.
Revision Changes Path
1.473 +2 -0 exim/exim-doc/doc-txt/ChangeLog
1.139 +4 -0 exim/exim-doc/doc-txt/NewStuff
1.30 +1 -0 exim/exim-doc/doc-txt/OptionLists.txt
1.35 +7 -1 exim/exim-src/src/transports/smtp.c
1.12 +1 -0 exim/exim-src/src/transports/smtp.h
1.2 +3 -1 exim/exim-test/confs/0217
1.3 +6 -0 exim/exim-test/log/0217
1.2 +26 -0 exim/exim-test/scripts/0000-Basic/0217
1.3 +33 -0 exim/exim-test/stderr/0217
1.2 +28 -0 exim/exim-test/stdout/0217
Index: ChangeLog
===================================================================
RCS file: /home/cvs/exim/exim-doc/doc-txt/ChangeLog,v
retrieving revision 1.472
retrieving revision 1.473
diff -u -r1.472 -r1.473
--- ChangeLog 6 Feb 2007 14:19:00 -0000 1.472
+++ ChangeLog 6 Feb 2007 14:49:13 -0000 1.473
@@ -1,4 +1,4 @@
-$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.472 2007/02/06 14:19:00 ph10 Exp $
+$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.473 2007/02/06 14:49:13 ph10 Exp $
Change log file for Exim from version 4.21
-------------------------------------------
@@ -84,6 +84,8 @@
was true (the default) a successful delivery failed to delete the retry
item, thus causing premature timeout of the address. The bug is now
fixed.
+
+PH/20 Added hosts_avoid_pipelining to the smtp transport.
Exim version 4.66
Index: NewStuff
===================================================================
RCS file: /home/cvs/exim/exim-doc/doc-txt/NewStuff,v
retrieving revision 1.138
retrieving revision 1.139
diff -u -r1.138 -r1.139
--- NewStuff 6 Feb 2007 12:19:27 -0000 1.138
+++ NewStuff 6 Feb 2007 14:49:13 -0000 1.139
@@ -1,4 +1,4 @@
-$Cambridge: exim/exim-doc/doc-txt/NewStuff,v 1.138 2007/02/06 12:19:27 ph10 Exp $
+$Cambridge: exim/exim-doc/doc-txt/NewStuff,v 1.139 2007/02/06 14:49:13 ph10 Exp $
New Features in Exim
--------------------
@@ -281,6 +281,10 @@
The value is expanded every time it is needed. If the expansion fails, a
panic is logged, and the default setting is used.
+
+14. The smtp transport has a new option called hosts_avoid_pipelining. It can
+ be used to suppress the use of PIPELINING to certain hosts, while still
+ supporting the other SMTP extensions (cf hosts_avoid_tls).
Version 4.66
Index: OptionLists.txt
===================================================================
RCS file: /home/cvs/exim/exim-doc/doc-txt/OptionLists.txt,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -r1.29 -r1.30
--- OptionLists.txt 18 Jan 2007 15:35:42 -0000 1.29
+++ OptionLists.txt 6 Feb 2007 14:49:13 -0000 1.30
@@ -1,4 +1,4 @@
-$Cambridge: exim/exim-doc/doc-txt/OptionLists.txt,v 1.29 2007/01/18 15:35:42 ph10 Exp $
+$Cambridge: exim/exim-doc/doc-txt/OptionLists.txt,v 1.30 2007/02/06 14:49:13 ph10 Exp $
LISTS OF EXIM OPTIONS
---------------------
@@ -265,6 +265,7 @@
hosts string unset iplookup 4.00
string list* unset smtp
hosts_avoid_esmtp host list unset smtp 4.21
+hosts_avoid_pipelining host list unset smtp 4.67
hosts_avoid_tls host list unset smtp 3.20
hosts_connection_nolog host list unset main 4.43
hosts_max_try integer 5 smtp 3.20
Index: smtp.c
===================================================================
RCS file: /home/cvs/exim/exim-src/src/transports/smtp.c,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -r1.34 -r1.35
--- smtp.c 6 Feb 2007 14:19:00 -0000 1.34
+++ smtp.c 6 Feb 2007 14:49:13 -0000 1.35
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/transports/smtp.c,v 1.34 2007/02/06 14:19:00 ph10 Exp $ */
+/* $Cambridge: exim/exim-src/src/transports/smtp.c,v 1.35 2007/02/06 14:49:13 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -77,6 +77,8 @@
(void *)offsetof(smtp_transport_options_block, hosts) },
{ "hosts_avoid_esmtp", opt_stringptr,
(void *)offsetof(smtp_transport_options_block, hosts_avoid_esmtp) },
+ { "hosts_avoid_pipelining", opt_stringptr,
+ (void *)offsetof(smtp_transport_options_block, hosts_avoid_pipelining) },
#ifdef SUPPORT_TLS
{ "hosts_avoid_tls", opt_stringptr,
(void *)offsetof(smtp_transport_options_block, hosts_avoid_tls) },
@@ -160,6 +162,7 @@
NULL, /* hosts_require_auth */
NULL, /* hosts_require_tls */
NULL, /* hosts_avoid_tls */
+ NULL, /* hosts_avoid_pipelining */
NULL, /* hosts_avoid_esmtp */
NULL, /* hosts_nopass_tls */
5*60, /* command_timeout */
@@ -1189,9 +1192,12 @@
PCRE_EOPT, NULL, 0) >= 0;
/* Note whether the server supports PIPELINING. If hosts_avoid_esmtp matched
- the current host, esmtp will be false, so PIPELINING can never be used. */
+ the current host, esmtp will be false, so PIPELINING can never be used. If
+ the current host matches hosts_avoid_pipelining, don't do it. */
smtp_use_pipelining = esmtp &&
+ verify_check_this_host(&(ob->hosts_avoid_pipelining), NULL, host->name,
+ host->address, NULL) != OK &&
pcre_exec(regex_PIPELINING, NULL, CS buffer, Ustrlen(CS buffer), 0,
PCRE_EOPT, NULL, 0) >= 0;
Index: smtp.h
===================================================================
RCS file: /home/cvs/exim/exim-src/src/transports/smtp.h,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- smtp.h 18 Jan 2007 15:35:43 -0000 1.11
+++ smtp.h 6 Feb 2007 14:49:13 -0000 1.12
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/transports/smtp.h,v 1.11 2007/01/18 15:35:43 ph10 Exp $ */
+/* $Cambridge: exim/exim-src/src/transports/smtp.h,v 1.12 2007/02/06 14:49:13 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -24,6 +24,7 @@
uschar *hosts_require_auth;
uschar *hosts_require_tls;
uschar *hosts_avoid_tls;
+ uschar *hosts_avoid_pipelining;
uschar *hosts_avoid_esmtp;
uschar *hosts_nopass_tls;
int command_timeout;
Index: 0217
===================================================================
RCS file: /home/cvs/exim/exim-test/confs/0217,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- 0217 7 Feb 2006 10:34:25 -0000 1.1
+++ 0217 6 Feb 2007 14:49:13 -0000 1.2
@@ -1,5 +1,7 @@
# Exim test configuration 0217
+HAP=
+
exim_path = EXIM_PATH
host_lookup_order = bydns
primary_hostname = myhost.test.ex
@@ -43,7 +45,7 @@
command_timeout = 1s
hosts = 127.0.0.1
port = PORT_S
-
+ HAP
# ----- Retry -----
Index: 0217
===================================================================
RCS file: /home/cvs/exim/exim-test/log/0217,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- 0217 9 Mar 2006 15:10:17 -0000 1.2
+++ 0217 6 Feb 2007 14:49:13 -0000 1.3
@@ -119,3 +119,9 @@
1999-03-02 09:44:33 10HmbO-0005vi-00 ** CALLER@??? R=bounce: just discard
1999-03-02 09:44:33 10HmbO-0005vi-00 CALLER@???: error ignored
1999-03-02 09:44:33 10HmbO-0005vi-00 Completed
+1999-03-02 09:44:33 10HmbP-0005vi-00 <= CALLER@??? U=CALLER P=local S=sss
+1999-03-02 09:44:33 10HmbP-0005vi-00 => w@??? R=client T=send_to_server H=127.0.0.1 [127.0.0.1]
+1999-03-02 09:44:33 10HmbP-0005vi-00 -> x@??? R=client T=send_to_server H=127.0.0.1 [127.0.0.1]
+1999-03-02 09:44:33 10HmbP-0005vi-00 -> y@??? R=client T=send_to_server H=127.0.0.1 [127.0.0.1]
+1999-03-02 09:44:33 10HmbP-0005vi-00 -> z@??? R=client T=send_to_server H=127.0.0.1 [127.0.0.1]
+1999-03-02 09:44:33 10HmbP-0005vi-00 Completed
Index: 0217
===================================================================
RCS file: /home/cvs/exim/exim-test/scripts/0000-Basic/0217,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- 0217 7 Feb 2006 10:54:33 -0000 1.1
+++ 0217 6 Feb 2007 14:49:13 -0000 1.2
@@ -316,4 +316,30 @@
exim -odi a b c d e
.
****
+# Discard retry data
+sudo rm DIR/spool/db/*
+#
+# Test hosts_avoid_pipelining
+server PORT_S
+220 Server ready
+EHLO
+250-OK
+250 PIPELINING
+MAIL FROM
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+RCPT TO
+250 OK
+DATA
+351 Send more
+.
+250 OK
+****
+exim -v -odi -DHAP=hosts_avoid_pipelining=127.0.0.1 w x y z
+****
no_msglog_check
Index: 0217
===================================================================
RCS file: /home/cvs/exim/exim-test/stderr/0217,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- 0217 9 Mar 2006 15:10:17 -0000 1.2
+++ 0217 6 Feb 2007 14:49:14 -0000 1.3
@@ -228,3 +228,36 @@
CALLER@???: error ignored
LOG: MAIN
Completed
+LOG: MAIN
+ <= CALLER@??? U=CALLER P=local S=sss
+delivering 10HmbP-0005vi-00
+Connecting to 127.0.0.1 [127.0.0.1]:1224 ... connected
+ SMTP<< 220 Server ready
+ SMTP>> EHLO myhost.test.ex
+ SMTP<< 250-OK
+ 250 PIPELINING
+ SMTP>> MAIL FROM:<CALLER@???>
+ SMTP<< 250 OK
+ SMTP>> RCPT TO:<w@???>
+ SMTP<< 250 OK
+ SMTP>> RCPT TO:<x@???>
+ SMTP<< 250 OK
+ SMTP>> RCPT TO:<y@???>
+ SMTP<< 250 OK
+ SMTP>> RCPT TO:<z@???>
+ SMTP<< 250 OK
+ SMTP>> DATA
+ SMTP<< 351 Send more
+ SMTP>> writing message and terminating "."
+ SMTP<< 250 OK
+ SMTP>> QUIT
+LOG: MAIN
+ => w@??? R=client T=send_to_server H=127.0.0.1 [127.0.0.1]
+LOG: MAIN
+ -> x@??? R=client T=send_to_server H=127.0.0.1 [127.0.0.1]
+LOG: MAIN
+ -> y@??? R=client T=send_to_server H=127.0.0.1 [127.0.0.1]
+LOG: MAIN
+ -> z@??? R=client T=send_to_server H=127.0.0.1 [127.0.0.1]
+LOG: MAIN
+ Completed
Index: 0217
===================================================================
RCS file: /home/cvs/exim/exim-test/stdout/0217,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- 0217 7 Feb 2006 10:47:37 -0000 1.1
+++ 0217 6 Feb 2007 14:49:14 -0000 1.2
@@ -289,3 +289,31 @@
RCPT TO:<b@???>
550 NO
End of script
+Listening on port 1224 ...
+Connection request from [127.0.0.1]
+220 Server ready
+EHLO myhost.test.ex
+250-OK
+250 PIPELINING
+MAIL FROM:<CALLER@???>
+250 OK
+RCPT TO:<w@???>
+250 OK
+RCPT TO:<x@???>
+250 OK
+RCPT TO:<y@???>
+250 OK
+RCPT TO:<z@???>
+250 OK
+DATA
+351 Send more
+Received: from CALLER by myhost.test.ex with local (Exim x.yz)
+ (envelope-from <CALLER@???>)
+ id 10HmbP-0005vi-00; Tue, 2 Mar 1999 09:44:33 +0000
+Message-Id: <E10HmbP-0005vi-00@???>
+From: CALLER_NAME <CALLER@???>
+Date: Tue, 2 Mar 1999 09:44:33 +0000
+
+.
+250 OK
+End of script