From: Jeremy Harris Date: Sat, 16 Oct 2021 22:56:12 +0000 (+0100) Subject: Change advertised feature name for PIPECONNECT X-Git-Tag: exim-4.96-RC0~150 X-Git-Url: https://git.exim.org/exim.git/commitdiff_plain/a375c22c1df005c1bd710af1e540fba6e9a496d1 Change advertised feature name for PIPECONNECT --- diff --git a/doc/doc-txt/ChangeLog b/doc/doc-txt/ChangeLog index 811d12362..d38163be5 100644 --- a/doc/doc-txt/ChangeLog +++ b/doc/doc-txt/ChangeLog @@ -28,6 +28,10 @@ JH/05 Bug 2819: speed up command-line messages being read in. Previously a JH/06 Bug 2815: Fix ALPN sent by server under OpenSSL. Previously the string sent was prefixed with a length byte. +JH/07 Change the SMTP feature name for pipelining connect to be compliant with + RFC 5321. Previously Dovecot (at least) would log errors during + submission. + Exim version 4.95 ----------------- diff --git a/src/src/exim.c b/src/src/exim.c index f718366f6..1ed09d38d 100644 --- a/src/src/exim.c +++ b/src/src/exim.c @@ -1056,7 +1056,7 @@ g = string_cat(NULL, US"Support for:"); g = string_cat(g, US" OCSP"); #endif #ifndef DISABLE_PIPE_CONNECT - g = string_cat(g, US" PIPE_CONNECT"); + g = string_cat(g, US" PIPECONNECT"); #endif #ifndef DISABLE_PRDR g = string_cat(g, US" PRDR"); diff --git a/src/src/globals.h b/src/src/globals.h index ed264f0c1..1509ffa7f 100644 --- a/src/src/globals.h +++ b/src/src/globals.h @@ -275,7 +275,7 @@ extern struct global_flags { BOOL sender_set_untrusted :1; /* Sender set by untrusted caller */ BOOL smtp_authenticated :1; /* Sending client has authenticated */ #ifndef DISABLE_PIPE_CONNECT - BOOL smtp_in_early_pipe_advertised :1; /* server advertised PIPE_CONNECT */ + BOOL smtp_in_early_pipe_advertised :1; /* server advertised PIPECONNECT */ BOOL smtp_in_early_pipe_no_auth :1; /* too many authenticator names */ BOOL smtp_in_early_pipe_used :1; /* client did send early data */ #endif diff --git a/src/src/macros.h b/src/src/macros.h index 4263bc444..b2f4095bd 100644 --- a/src/src/macros.h +++ b/src/src/macros.h @@ -1075,8 +1075,8 @@ should not be one active. */ #define AUTHS_REGEX US"\\n250[\\s\\-]AUTH\\s+([\\-\\w \\t]+)(?:\\n|$)" -#define EARLY_PIPE_FEATURE_NAME "PIPE_CONNECT" -#define EARLY_PIPE_FEATURE_LEN 12 +#define EARLY_PIPE_FEATURE_NAME "PIPECONNECT" +#define EARLY_PIPE_FEATURE_LEN 11 /* Flags for auth_client_item() */ diff --git a/src/src/transports/smtp.c b/src/src/transports/smtp.c index 757b7b387..b50869414 100644 --- a/src/src/transports/smtp.c +++ b/src/src/transports/smtp.c @@ -846,9 +846,9 @@ return Ustrchr(host->address, ':') /* Cache EHLO-response info for use by early-pipe. Called - During a normal flow on EHLO response (either cleartext or under TLS), - when we are willing to do PIPE_CONNECT and it is offered + when we are willing to do PIPECONNECT and it is offered - During an early-pipe flow on receiving the actual EHLO response and noting - disparity versus the cached info used, when PIPE_CONNECT is still being offered + disparity versus the cached info used, when PIPECONNECT is still being offered We assume that suitable values have been set in the sx.ehlo_resp structure for features and auths; we handle the copy of limits. */ @@ -2261,7 +2261,7 @@ if (!continue_hostname) && sx->ehlo_resp.cleartext_features & OPTION_EARLY_PIPE) { DEBUG(D_transport) - debug_printf("Using cached cleartext PIPE_CONNECT\n"); + debug_printf("Using cached cleartext PIPECONNECT\n"); sx->early_pipe_active = TRUE; sx->peer_offered = sx->ehlo_resp.cleartext_features; } @@ -2763,7 +2763,7 @@ if (tls_out.active.sock >= 0) sx->peer_offered = sx->ehlo_resp.crypted_features; if ((sx->early_pipe_active = !!(sx->ehlo_resp.crypted_features & OPTION_EARLY_PIPE))) - DEBUG(D_transport) debug_printf("Using cached crypted PIPE_CONNECT\n"); + DEBUG(D_transport) debug_printf("Using cached crypted PIPECONNECT\n"); } #endif #ifdef EXPERIMMENTAL_ESMTP_LIMITS @@ -2962,7 +2962,7 @@ if ( !continue_hostname && ( sx->ehlo_resp.cleartext_features | sx->ehlo_resp.crypted_features) & OPTION_EARLY_PIPE) { - DEBUG(D_transport) debug_printf("PIPE_CONNECT usable in future for this IP\n"); + DEBUG(D_transport) debug_printf("PIPECONNECT usable in future for this IP\n"); sx->ehlo_resp.crypted_auths = study_ehlo_auths(sx); write_ehlo_cache_entry(sx); }