summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/doc-docbook/spec.xfpt2
-rw-r--r--src/src/daemon.c7
-rw-r--r--src/src/functions.h4
-rw-r--r--src/src/hash.c2
-rw-r--r--src/src/receive.c16
-rw-r--r--src/src/verify.c8
-rw-r--r--test/stderr/45201
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