X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/1d717e1c110562fd6bf28478c79f180cafeba776..5c161fa615ab4a2d40170fedd71d1b9a7f079ff6:/src/src/smtp_out.c diff --git a/src/src/smtp_out.c b/src/src/smtp_out.c index 96ee15282..911dd537e 100644 --- a/src/src/smtp_out.c +++ b/src/src/smtp_out.c @@ -3,6 +3,7 @@ *************************************************/ /* Copyright (c) University of Cambridge 1995 - 2018 */ +/* Copyright (c) The Exim Maintainers 2020 */ /* See the file NOTICE for conditions of use and distribution. */ /* A number of functions for driving outgoing SMTP calls. */ @@ -63,8 +64,8 @@ if (is_tainted(expint)) return FALSE; } -while (isspace(*expint)) expint++; -if (*expint == 0) return TRUE; +Uskip_whitespace(&expint); +if (!*expint) return TRUE; while ((iface = string_nextinlist(&expint, &sep, big_buffer, big_buffer_size))) @@ -374,7 +375,7 @@ smtp_port_for_connect(host_item * host, int port) { if (host->port != PORT_NONE) { - HDEBUG(D_transport|D_acl|D_v) + HDEBUG(D_transport|D_acl|D_v) if (port != host->port) debug_printf_indent("Transport port=%d replaced by host-specific port=%d\n", port, host->port); port = host->port; @@ -500,7 +501,7 @@ else rc = n; } else - + { rc = send(outblock->cctx->sock, outblock->buffer, n, #ifdef MSG_MORE more ? MSG_MORE : 0 @@ -508,6 +509,17 @@ else 0 #endif ); + +#if defined(__linux__) + /* This is a workaround for a current linux kernel bug: as of + 5.6.8-200.fc31.x86_64 small (cctx->sock, IPPROTO_TCP, TCP_CORK, &off, sizeof(off)); +#endif + } } if (rc <= 0) @@ -597,7 +609,7 @@ if (format) while (!isspace(*p)) p++; while (isspace(*p)) p++; } - while (*p != 0) *p++ = '*'; + while (*p) *p++ = '*'; } HDEBUG(D_transport|D_acl|D_v) debug_printf_indent(" SMTP>> %s\n", big_buffer);