Change advertised feature name for PIPECONNECT
authorJeremy Harris <jgh146exb@wizmail.org>
Sat, 16 Oct 2021 22:56:12 +0000 (23:56 +0100)
committerJeremy Harris <jgh146exb@wizmail.org>
Sun, 17 Oct 2021 11:17:59 +0000 (12:17 +0100)
doc/doc-txt/ChangeLog
src/src/exim.c
src/src/globals.h
src/src/macros.h
src/src/transports/smtp.c

index 811d123622d8e0339a921bc993e02ef844fcd62e..d38163be55f1a5ed3936731c97eaf54c324b524b 100644 (file)
@@ -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
 -----------------
index f718366f68803e9de79afed986d60f8fa2ca05f7..1ed09d38dd0089c06364f20ae64ce90b4fcec0e9 100644 (file)
@@ -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");
index ed264f0c149d79c1c62d33211d655678f858936a..1509ffa7fcb95c4d6f132fe6dfdaaaaa2048f836 100644 (file)
@@ -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
index 4263bc444af7ae40d5c903f7394e11fa07d579ad..b2f4095bd6e0590de6cc10b511234cf23e57911d 100644 (file)
@@ -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() */
index 757b7b3879cbd2d2e93dbba516721e6247ac08c5..b50869414612d44016c8e3db175f8dc82dda1dbe 100644 (file)
@@ -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);
       }