diff options
-rw-r--r-- | doc/doc-docbook/spec.xfpt | 2 | ||||
-rw-r--r-- | src/src/daemon.c | 7 | ||||
-rw-r--r-- | src/src/functions.h | 4 | ||||
-rw-r--r-- | src/src/hash.c | 2 | ||||
-rw-r--r-- | src/src/receive.c | 16 | ||||
-rw-r--r-- | src/src/verify.c | 8 | ||||
-rw-r--r-- | test/stderr/4520 | 1 |
7 files changed, 19 insertions, 21 deletions
diff --git a/doc/doc-docbook/spec.xfpt b/doc/doc-docbook/spec.xfpt index 925b96324..ca5b2ea29 100644 --- a/doc/doc-docbook/spec.xfpt +++ b/doc/doc-docbook/spec.xfpt @@ -30909,6 +30909,7 @@ need to use this option unless you know that the called hosts make use of the sender when checking recipients. If used indiscriminately, it reduces the usefulness of callout caching. +.new .vitem &*hold*& This option applies to recipient callouts only. For example: .code @@ -30923,6 +30924,7 @@ The advantage is only gained if there are no callout cache hits if the use_sender option is used, if neither the random nor the use_postmaster option is used, and if no other callouts intervene. +.wen .endlist If you use any of the parameters that set a non-empty sender for the MAIL diff --git a/src/src/daemon.c b/src/src/daemon.c index 187378684..e31de1518 100644 --- a/src/src/daemon.c +++ b/src/src/daemon.c @@ -1967,10 +1967,8 @@ for (;;) errno = EINTR; } else - { lcount = select(max_socket + 1, (SELECT_ARG2_TYPE *)&select_listen, NULL, NULL, NULL); - } if (lcount < 0) { @@ -1996,10 +1994,9 @@ for (;;) while (lcount-- > 0) { int accept_socket = -1; + if (!select_failed) - { for (sk = 0; sk < listen_socket_count; sk++) - { if (FD_ISSET(listen_sockets[sk], &select_listen)) { len = sizeof(accepted); @@ -2008,8 +2005,6 @@ for (;;) FD_CLR(listen_sockets[sk], &select_listen); break; } - } - } /* If select or accept has failed and this was not caused by an interruption, log the incident and try again. With asymmetric TCP/IP diff --git a/src/src/functions.h b/src/src/functions.h index 331480188..d99e1ca40 100644 --- a/src/src/functions.h +++ b/src/src/functions.h @@ -116,8 +116,8 @@ extern uschar **child_exec_exim(int, BOOL, int *, BOOL, int, ...); extern pid_t child_open_uid(const uschar **, const uschar **, int, uid_t *, gid_t *, int *, int *, uschar *, BOOL); extern BOOL cleanup_environment(void); -extern BOOL cutthrough_data_puts(uschar *, int); -extern BOOL cutthrough_data_put_nl(void); +extern void cutthrough_data_puts(uschar *, int); +extern void cutthrough_data_put_nl(void); extern uschar *cutthrough_finaldot(void); extern BOOL cutthrough_flush_send(void); extern BOOL cutthrough_headers_send(void); diff --git a/src/src/hash.c b/src/src/hash.c index 7590d55b7..bde22b26a 100644 --- a/src/src/hash.c +++ b/src/src/hash.c @@ -51,7 +51,7 @@ switch (h->method) case HASH_SHA1: SHA1_Update (&h->u.sha1, data, len); break; case HASH_SHA256: SHA256_Update(&h->u.sha2, data, len); break; /* should be blocked by init not handling these, but be explicit to - * guard against accidents later (and hush up clang -Wswitch) */ + guard against accidents later (and hush up clang -Wswitch) */ default: assert(0); } } diff --git a/src/src/receive.c b/src/src/receive.c index 33c60e08d..aaf9215e9 100644 --- a/src/src/receive.c +++ b/src/src/receive.c @@ -831,7 +831,7 @@ while ((ch = (receive_getc)(GETC_BUFFER_UNLIMITED)) != EOF) { message_size++; if (fout != NULL && fputc('\n', fout) == EOF) return END_WERROR; - (void) cutthrough_data_put_nl(); + cutthrough_data_put_nl(); if (ch != '\r') ch_state = 1; else continue; } break; @@ -850,7 +850,7 @@ while ((ch = (receive_getc)(GETC_BUFFER_UNLIMITED)) != EOF) if (ch == '.') { uschar c= ch; - (void) cutthrough_data_puts(&c, 1); + cutthrough_data_puts(&c, 1); } ch_state = 1; break; @@ -860,7 +860,7 @@ while ((ch = (receive_getc)(GETC_BUFFER_UNLIMITED)) != EOF) message_size++; body_linecount++; if (fout != NULL && fputc('\n', fout) == EOF) return END_WERROR; - (void) cutthrough_data_put_nl(); + cutthrough_data_put_nl(); if (ch == '\r') { ch_state = 2; @@ -881,11 +881,11 @@ while ((ch = (receive_getc)(GETC_BUFFER_UNLIMITED)) != EOF) if (message_size > thismessage_size_limit) return END_SIZE; } if(ch == '\n') - (void) cutthrough_data_put_nl(); + cutthrough_data_put_nl(); else { uschar c = ch; - (void) cutthrough_data_puts(&c, 1); + cutthrough_data_puts(&c, 1); } } @@ -991,7 +991,7 @@ for(;;) { message_size++; if (fout && fputc('\n', fout) == EOF) return END_WERROR; - (void) cutthrough_data_put_nl(); + cutthrough_data_put_nl(); if (ch == '\r') continue; /* don't write CR */ ch_state = MID_LINE; } @@ -1008,11 +1008,11 @@ for(;;) if (message_size > thismessage_size_limit) return END_SIZE; } if(ch == '\n') - (void) cutthrough_data_put_nl(); + cutthrough_data_put_nl(); else { uschar c = ch; - (void) cutthrough_data_puts(&c, 1); + cutthrough_data_puts(&c, 1); } } /*NOTREACHED*/ diff --git a/src/src/verify.c b/src/src/verify.c index 59add8c00..b28d15a71 100644 --- a/src/src/verify.c +++ b/src/src/verify.c @@ -1217,10 +1217,10 @@ cancel_cutthrough_connection(TRUE, US"transmit failed"); return FALSE; } -BOOL +void cutthrough_data_puts(uschar * cp, int n) { -if (cutthrough.delivery) cutthrough_puts(cp, n); +if (cutthrough.delivery) (void) cutthrough_puts(cp, n); } @@ -1253,10 +1253,10 @@ return cutthrough_puts(US"\r\n", 2); } -BOOL +void cutthrough_data_put_nl(void) { -return cutthrough_data_puts(US"\r\n", 2); +cutthrough_data_puts(US"\r\n", 2); } diff --git a/test/stderr/4520 b/test/stderr/4520 index c2a856bb1..1642af78b 100644 --- a/test/stderr/4520 +++ b/test/stderr/4520 @@ -3,6 +3,7 @@ configuration file is TESTSUITE/test-config admin user LOG: MAIN <= CALLER@myhost.test.ex U=CALLER P=local S=sss +release cutthrough conn: msg passed for delivery Exim version x.yz .... configuration file is TESTSUITE/test-config trusted user |