diff options
author | Philip Hazel <ph10@hermes.cam.ac.uk> | 2007-01-30 11:45:20 +0000 |
---|---|---|
committer | Philip Hazel <ph10@hermes.cam.ac.uk> | 2007-01-30 11:45:20 +0000 |
commit | cf8b11a5399e64e50b6cd58f56a98197aca599d8 (patch) | |
tree | 9212bab3a24fa7e7cebe1d6896d9519624569115 /src | |
parent | 094a9ec3772cfee192263fce6346a47b6c472bee (diff) |
Add control=no_pipelining.
Diffstat (limited to 'src')
-rw-r--r-- | src/src/acl.c | 18 | ||||
-rw-r--r-- | src/src/globals.c | 3 | ||||
-rw-r--r-- | src/src/globals.h | 3 | ||||
-rw-r--r-- | src/src/smtp_in.c | 6 |
4 files changed, 23 insertions, 7 deletions
diff --git a/src/src/acl.c b/src/src/acl.c index 73f0614af..3e06cdf30 100644 --- a/src/src/acl.c +++ b/src/src/acl.c @@ -1,4 +1,4 @@ -/* $Cambridge: exim/src/src/acl.c,v 1.68 2007/01/08 10:50:17 ph10 Exp $ */ +/* $Cambridge: 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 @@ enum { #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 @@ static uschar *controls[] = { #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 @@ static unsigned int control_forbids[] = { (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 @@ static control_def controls_list[] = { { 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 }, @@ -2593,6 +2601,10 @@ for (; cb != NULL; cb = cb->next) no_multiline_responses = TRUE; break; + case CONTROL_NO_PIPELINING: + pipelining_enable = FALSE; + break; + case CONTROL_FAKEDEFER: case CONTROL_FAKEREJECT: fake_response = (control_type == CONTROL_FAKEDEFER) ? DEFER : FAIL; diff --git a/src/src/globals.c b/src/src/globals.c index 74b6554cf..969ac7189 100644 --- a/src/src/globals.c +++ b/src/src/globals.c @@ -1,4 +1,4 @@ -/* $Cambridge: exim/src/src/globals.c,v 1.64 2007/01/22 16:29:54 ph10 Exp $ */ +/* $Cambridge: 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 @@ BOOL parse_found_group = FALSE; 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; diff --git a/src/src/globals.h b/src/src/globals.h index 660d62fe5..75f665041 100644 --- a/src/src/globals.h +++ b/src/src/globals.h @@ -1,4 +1,4 @@ -/* $Cambridge: exim/src/src/globals.h,v 1.45 2007/01/22 16:29:54 ph10 Exp $ */ +/* $Cambridge: 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 BOOL parse_found_group; /* In the middle of a group */ 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 */ diff --git a/src/src/smtp_in.c b/src/src/smtp_in.c index b6a6669e9..d0ac95967 100644 --- a/src/src/smtp_in.c +++ b/src/src/smtp_in.c @@ -1,4 +1,4 @@ -/* $Cambridge: exim/src/src/smtp_in.c,v 1.52 2007/01/23 14:34:02 ph10 Exp $ */ +/* $Cambridge: 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 @@ synprot_error_count = unknown_command_count = nonmail_command_count = 0; 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 @@ while (done <= 0) /* 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); |