ph10 2007/01/30 11:45:20 GMT
Modified files:
exim-doc/doc-txt ChangeLog NewStuff
exim-src/src acl.c globals.c globals.h smtp_in.c
Added files:
exim-test/confs 0549
exim-test/log 0549
exim-test/scripts/0000-Basic 0549
exim-test/stdout 0549
Log:
Add control=no_pipelining.
Revision Changes Path
1.464 +2 -0 exim/exim-doc/doc-txt/ChangeLog
1.131 +6 -0 exim/exim-doc/doc-txt/NewStuff
1.69 +14 -2 exim/exim-src/src/acl.c
1.65 +1 -0 exim/exim-src/src/globals.c
1.46 +1 -0 exim/exim-src/src/globals.h
1.53 +3 -1 exim/exim-src/src/smtp_in.c
1.1 +26 -0 exim/exim-test/confs/0549 (new)
1.1 +1 -0 exim/exim-test/log/0549 (new)
1.1 +25 -0 exim/exim-test/scripts/0000-Basic/0549 (new)
1.1 +30 -0 exim/exim-test/stdout/0549 (new)
Index: ChangeLog
===================================================================
RCS file: /home/cvs/exim/exim-doc/doc-txt/ChangeLog,v
retrieving revision 1.463
retrieving revision 1.464
diff -u -r1.463 -r1.464
--- ChangeLog 25 Jan 2007 15:51:28 -0000 1.463
+++ ChangeLog 30 Jan 2007 11:45:20 -0000 1.464
@@ -1,4 +1,4 @@
-$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.463 2007/01/25 15:51:28 ph10 Exp $
+$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.464 2007/01/30 11:45:20 ph10 Exp $
Change log file for Exim from version 4.21
-------------------------------------------
@@ -59,6 +59,8 @@
in the batch. While fixing this I discovered that the process information
(output by running exiwhat) was not always getting set for -bs and -bS
input. This is fixed, and it now also says "batched" for BSMTP.
+
+PH/11 Added control=no_pipelining.
Exim version 4.66
Index: NewStuff
===================================================================
RCS file: /home/cvs/exim/exim-doc/doc-txt/NewStuff,v
retrieving revision 1.130
retrieving revision 1.131
diff -u -r1.130 -r1.131
--- NewStuff 23 Jan 2007 14:34:02 -0000 1.130
+++ NewStuff 30 Jan 2007 11:45:20 -0000 1.131
@@ -1,4 +1,4 @@
-$Cambridge: exim/exim-doc/doc-txt/NewStuff,v 1.130 2007/01/23 14:34:02 ph10 Exp $
+$Cambridge: exim/exim-doc/doc-txt/NewStuff,v 1.131 2007/01/30 11:45:20 ph10 Exp $
New Features in Exim
--------------------
@@ -196,6 +196,12 @@
connections there actually are, because many other connections may come and
go while a single connection is being processed. When a child process
terminates, the daemon decrements the variable.
+
+ 6. There's a new control called no_pipelining, which does what its name
+ suggests. It turns off the advertising of the PIPELINING extension to SMTP.
+ To be useful, this control must be obeyed before Exim sends its response to
+ an EHLO command. Therefore, it should normally appear in an ACL controlled
+ by acl_smtp_connect or acl_smtp_helo.
Version 4.66
Index: acl.c
===================================================================
RCS file: /home/cvs/exim/exim-src/src/acl.c,v
retrieving revision 1.68
retrieving revision 1.69
diff -u -r1.68 -r1.69
--- acl.c 8 Jan 2007 10:50:17 -0000 1.68
+++ acl.c 30 Jan 2007 11:45:20 -0000 1.69
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/acl.c,v 1.68 2007/01/08 10:50:17 ph10 Exp $ */
+/* $Cambridge: exim/exim-src/src/acl.c,v 1.69 2007/01/30 11:45:20 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -186,7 +186,8 @@
#endif
CONTROL_FAKEDEFER,
CONTROL_FAKEREJECT,
- CONTROL_NO_MULTILINE
+ CONTROL_NO_MULTILINE,
+ CONTROL_NO_PIPELINING
};
/* ACL control names; keep in step with the table above! This list is used for
@@ -214,7 +215,10 @@
#ifdef WITH_CONTENT_SCAN
US"no_mbox_unspool",
#endif
- US"no_multiline"
+ US"fakedefer",
+ US"fakereject",
+ US"no_multiline",
+ US"no_pipelining",
};
/* Flags to indicate for which conditions /modifiers a string expansion is done
@@ -586,6 +590,9 @@
(1<<ACL_WHERE_MIME)),
(1<<ACL_WHERE_NOTSMTP)| /* no_multiline */
+ (1<<ACL_WHERE_NOTSMTP_START),
+
+ (1<<ACL_WHERE_NOTSMTP)| /* no_pipelining */
(1<<ACL_WHERE_NOTSMTP_START)
};
@@ -611,6 +618,7 @@
{ US"freeze", CONTROL_FREEZE, TRUE },
{ US"no_enforce_sync", CONTROL_NO_ENFORCE_SYNC, FALSE },
{ US"no_multiline_responses", CONTROL_NO_MULTILINE, FALSE },
+ { US"no_pipelining", CONTROL_NO_PIPELINING, FALSE },
{ US"queue_only", CONTROL_QUEUE_ONLY, FALSE },
#ifdef WITH_CONTENT_SCAN
{ US"no_mbox_unspool", CONTROL_NO_MBOX_UNSPOOL, FALSE },
@@ -2591,6 +2599,10 @@
case CONTROL_NO_MULTILINE:
no_multiline_responses = TRUE;
+ break;
+
+ case CONTROL_NO_PIPELINING:
+ pipelining_enable = FALSE;
break;
case CONTROL_FAKEDEFER:
Index: globals.c
===================================================================
RCS file: /home/cvs/exim/exim-src/src/globals.c,v
retrieving revision 1.64
retrieving revision 1.65
diff -u -r1.64 -r1.65
--- globals.c 22 Jan 2007 16:29:54 -0000 1.64
+++ globals.c 30 Jan 2007 11:45:20 -0000 1.65
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/globals.c,v 1.64 2007/01/22 16:29:54 ph10 Exp $ */
+/* $Cambridge: exim/exim-src/src/globals.c,v 1.65 2007/01/30 11:45:20 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -790,6 +790,7 @@
uschar *percent_hack_domains = NULL;
uschar *pid_file_path = US PID_FILE_PATH
"\0<--------------Space to patch pid_file_path->";
+BOOL pipelining_enable = TRUE;
uschar *pipelining_advertise_hosts = US"*";
BOOL preserve_message_logs = FALSE;
uschar *primary_hostname = NULL;
Index: globals.h
===================================================================
RCS file: /home/cvs/exim/exim-src/src/globals.h,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -r1.45 -r1.46
--- globals.h 22 Jan 2007 16:29:54 -0000 1.45
+++ globals.h 30 Jan 2007 11:45:20 -0000 1.46
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/globals.h,v 1.45 2007/01/22 16:29:54 ph10 Exp $ */
+/* $Cambridge: exim/exim-src/src/globals.h,v 1.46 2007/01/30 11:45:20 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -495,6 +495,7 @@
extern uschar *percent_hack_domains; /* Local domains for which '% operates */
extern uschar *pid_file_path; /* For writing daemon pids */
extern uschar *pipelining_advertise_hosts; /* As it says */
+extern BOOL pipelining_enable; /* As it says */
extern BOOL preserve_message_logs; /* Save msglog files */
extern uschar *primary_hostname; /* Primary name of this computer */
extern BOOL print_topbitchars; /* Topbit chars are printing chars */
Index: smtp_in.c
===================================================================
RCS file: /home/cvs/exim/exim-src/src/smtp_in.c,v
retrieving revision 1.52
retrieving revision 1.53
diff -u -r1.52 -r1.53
--- smtp_in.c 23 Jan 2007 14:34:02 -0000 1.52
+++ smtp_in.c 30 Jan 2007 11:45:20 -0000 1.53
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/smtp_in.c,v 1.52 2007/01/23 14:34:02 ph10 Exp $ */
+/* $Cambridge: exim/exim-src/src/smtp_in.c,v 1.53 2007/01/30 11:45:20 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -1244,6 +1244,7 @@
smtp_delay_mail = smtp_rlm_base;
auth_advertised = FALSE;
pipelining_advertised = FALSE;
+pipelining_enable = TRUE;
sync_cmd_limit = NON_SYNC_CMD_NON_PIPELINING;
memset(sender_host_cache, 0, sizeof(sender_host_cache));
@@ -2851,7 +2852,8 @@
/* Exim is quite happy with pipelining, so let the other end know that
it is safe to use it, unless advertising is disabled. */
- if (verify_check_host(&pipelining_advertise_hosts) == OK)
+ if (pipelining_enable &&
+ verify_check_host(&pipelining_advertise_hosts) == OK)
{
s = string_cat(s, &size, &ptr, smtp_code, 3);
s = string_cat(s, &size, &ptr, US"-PIPELINING\r\n", 13);
Index: 0549
====================================================================
# Exim test configuration 0549
exim_path = EXIM_PATH
host_lookup_order = bydns
primary_hostname = myhost.test.ex
rfc1413_query_timeout = 0s
spool_directory = DIR/spool
log_file_path = DIR/spool/log/%slog
gecos_pattern = ""
gecos_name = CALLER_NAME
# ----- Main settings -----
acl_smtp_connect = check_connect
# ----- ACL -----
begin ACL
check_connect:
accept hosts = 127.0.0.1
control = no_pipelining
accept
# End
Index: 0549
====================================================================
1999-03-02 09:44:33 exim x.yz daemon started: pid=pppp, no queue runs, listening for SMTP on port 1225
Index: 0549
====================================================================
# no_pipelining
need_ipv4
#
exim -DSERVER=server -bd -oX PORT_D
****
client 127.0.0.1 PORT_D
??? 220
ehlo abcd
??? 250-
??? 250-
??? 250
quit
??? 221
****
client HOSTIPV4 PORT_D
??? 220
ehlo abcd
??? 250-
??? 250-
??? 250-
??? 250
quit
??? 221
****
killdaemon
Index: 0549
====================================================================
Connecting to 127.0.0.1 port 1225 ... connected
??? 220
<<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
>>> ehlo abcd
??? 250-
<<< 250-myhost.test.ex Hello abcd [127.0.0.1]
??? 250-
<<< 250-SIZE 52428800
??? 250
<<< 250 HELP
>>> quit
??? 221
<<< 221 myhost.test.ex closing connection
End of script
Connecting to ip4.ip4.ip4.ip4 port 1225 ... connected
??? 220
<<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
>>> ehlo abcd
??? 250-
<<< 250-myhost.test.ex Hello abcd [ip4.ip4.ip4.ip4]
??? 250-
<<< 250-SIZE 52428800
??? 250-
<<< 250-PIPELINING
??? 250
<<< 250 HELP
>>> quit
??? 221
<<< 221 myhost.test.ex closing connection
End of script