[exim-cvs] Build: include early-pipelining unless disabled

Startseite
Nachricht löschen
Nachricht beantworten
Autor: Exim Git Commits Mailing List
Datum:  
To: exim-cvs
Betreff: [exim-cvs] Build: include early-pipelining unless disabled
Gitweb: https://git.exim.org/exim.git/commitdiff/81344b40e3de597f60758926e5e1ae7a81dd5457
Commit:     81344b40e3de597f60758926e5e1ae7a81dd5457
Parent:     0b2719ad1b302f9bfb25d6c29b6541e7d8a392ef
Author:     Jeremy Harris <jgh146exb@???>
AuthorDate: Sun Oct 20 00:10:20 2019 +0100
Committer:  Jeremy Harris <jgh146exb@???>
CommitDate: Sun Oct 20 13:33:11 2019 +0100


    Build: include early-pipelining unless disabled
---
 doc/doc-txt/ChangeLog     |  2 ++
 src/src/config.h.defaults |  2 +-
 src/src/dbstuff.h         |  2 +-
 src/src/deliver.c         |  6 ++--
 src/src/exim.c            |  2 +-
 src/src/globals.c         |  6 ++--
 src/src/globals.h         |  6 ++--
 src/src/macro_predef.c    |  2 +-
 src/src/readconf.c        |  8 +++---
 src/src/receive.c         |  2 +-
 src/src/smtp_in.c         | 18 ++++++------
 src/src/smtp_out.c        |  2 +-
 src/src/structs.h         |  2 +-
 src/src/tls-openssl.c     |  4 +--
 src/src/transports/smtp.c | 72 +++++++++++++++++++++++------------------------
 src/src/transports/smtp.h |  8 +++---
 16 files changed, 73 insertions(+), 71 deletions(-)


diff --git a/doc/doc-txt/ChangeLog b/doc/doc-txt/ChangeLog
index 9a27e14..079b5a1 100644
--- a/doc/doc-txt/ChangeLog
+++ b/doc/doc-txt/ChangeLog
@@ -12,6 +12,8 @@ JH/01 Avoid costly startup code when not strictly needed.  This reduces time
       for some exim process initialisations.  It does mean that the logging
       of TLS configuration problems is only done for the daemon startup.


+JH/02 Early-pipelining support code is now included unless disabled in Makefile.
+

 Exim version 4.93
 -----------------
diff --git a/src/src/config.h.defaults b/src/src/config.h.defaults
index 84837d5..223e2d6 100644
--- a/src/src/config.h.defaults
+++ b/src/src/config.h.defaults
@@ -50,6 +50,7 @@ Do not put spaces between # and the 'define'.
 #define DISABLE_DKIM
 #define DISABLE_EVENT
 #define DISABLE_OCSP
+#define DISABLE_PIPE_CONNECT
 #define DISABLE_PRDR
 #define DISABLE_TLS
 #define DISABLE_D_OPTION
@@ -151,7 +152,6 @@ Do not put spaces between # and the 'define'.
 #define SUPPORT_MAILSTORE
 #define SUPPORT_MBX
 #define SUPPORT_MOVE_FROZEN_MESSAGES
-#define SUPPORT_PIPE_CONNECT
 #define SUPPORT_PAM
 #define SUPPORT_PROXY
 #define SUPPORT_SOCKS
diff --git a/src/src/dbstuff.h b/src/src/dbstuff.h
index b7889bd..bf5fa3f 100644
--- a/src/src/dbstuff.h
+++ b/src/src/dbstuff.h
@@ -786,7 +786,7 @@ typedef struct {
   uschar   bloom[40];     /* Bloom filter which may be larger than this */
 } dbdata_ratelimit_unique;


-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
/* This structure records the EHLO responses, cleartext and crypted,
for an IP, as bitmasks (cf. OPTION_TLS) */

diff --git a/src/src/deliver.c b/src/src/deliver.c
index 5fc7481..b89671c 100644
--- a/src/src/deliver.c
+++ b/src/src/deliver.c
@@ -1221,7 +1221,7 @@ else
     {
     if (testflag(addr, af_pipelining))
       g = string_catn(g, US" L", 2);
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
     if (testflag(addr, af_early_pipe))
       g = string_catn(g, US"*", 1);
 #endif
@@ -3533,7 +3533,7 @@ while (!done)
     case 'L':
       switch (*subid)
     {
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
     case 2: setflag(addr, af_early_pipe);    /*FALLTHROUGH*/
 #endif
     case 1: setflag(addr, af_pipelining); break;
@@ -4840,7 +4840,7 @@ all pipes, so I do not see a reason to use non-blocking IO here
 #endif


       if (testflag(addr, af_pipelining))
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
     if (testflag(addr, af_early_pipe))
       rmt_dlv_checked_write(fd, 'L', '2', NULL, 0);
     else
diff --git a/src/src/exim.c b/src/src/exim.c
index 084fa8d..d6952ef 100644
--- a/src/src/exim.c
+++ b/src/src/exim.c
@@ -901,7 +901,7 @@ fprintf(fp, "Support for:");
 #ifndef DISABLE_OCSP
   fprintf(fp, " OCSP");
 #endif
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
   fprintf(fp, " PIPE_CONNECT");
 #endif
 #ifndef DISABLE_PRDR
diff --git a/src/src/globals.c b/src/src/globals.c
index 3540a9e..87ff2e6 100644
--- a/src/src/globals.c
+++ b/src/src/globals.c
@@ -298,7 +298,7 @@ struct global_flags f =
     .sender_name_forced     = FALSE,
     .sender_set_untrusted   = FALSE,
     .smtp_authenticated     = FALSE,
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
     .smtp_in_early_pipe_advertised = FALSE,
     .smtp_in_early_pipe_no_auth = FALSE,
     .smtp_in_early_pipe_used = FALSE,
@@ -1168,7 +1168,7 @@ uschar *override_pid_file_path = NULL;
 uschar *percent_hack_domains   = NULL;
 uschar *pid_file_path          = US PID_FILE_PATH
                            "\0<--------------Space to patch pid_file_path->";
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
 uschar *pipe_connect_advertise_hosts = US"*";
 #endif
 uschar *pipelining_advertise_hosts = US"*";
@@ -1258,7 +1258,7 @@ const pcre *regex_From         = NULL;
 const pcre *regex_IGNOREQUOTA  = NULL;
 const pcre *regex_PIPELINING   = NULL;
 const pcre *regex_SIZE         = NULL;
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
 const pcre *regex_EARLY_PIPE   = NULL;
 #endif
 const pcre *regex_ismsgid      = NULL;
diff --git a/src/src/globals.h b/src/src/globals.h
index ffc633f..ee89fd1 100644
--- a/src/src/globals.h
+++ b/src/src/globals.h
@@ -258,7 +258,7 @@ extern struct global_flags {
  BOOL   sender_name_forced        :1; /* Set by -F */
  BOOL   sender_set_untrusted        :1; /* Sender set by untrusted caller */
  BOOL   smtp_authenticated        :1; /* Sending client has authenticated */
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
  BOOL   smtp_in_early_pipe_advertised    :1; /* server advertised PIPE_CONNECT */
  BOOL    smtp_in_early_pipe_no_auth    :1; /* too many authenticator names */
  BOOL   smtp_in_early_pipe_used        :1; /* client did send early data */
@@ -750,7 +750,7 @@ extern uschar *override_pid_file_path; /* Value of -oP argument */


 extern uschar *percent_hack_domains;   /* Local domains for which '% operates */
 extern uschar *pid_file_path;          /* For writing daemon pids */
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
 extern uschar *pipe_connect_advertise_hosts; /* for banner/EHLO pipelining */
 #endif
 extern uschar *pipelining_advertise_hosts; /* As it says */
@@ -833,7 +833,7 @@ extern const pcre  *regex_CHUNKING;    /* For recognizing CHUNKING (RFC 3030) */
 extern const pcre  *regex_IGNOREQUOTA; /* For recognizing IGNOREQUOTA (LMTP) */
 extern const pcre  *regex_PIPELINING;  /* For recognizing PIPELINING */
 extern const pcre  *regex_SIZE;        /* For recognizing SIZE settings */
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
 extern const pcre  *regex_EARLY_PIPE;  /* For recognizing PIPE_CONNCT */
 #endif
 extern const pcre  *regex_ismsgid;     /* Compiled r.e. for message it */
diff --git a/src/src/macro_predef.c b/src/src/macro_predef.c
index e20ae89..383b0b3 100644
--- a/src/src/macro_predef.c
+++ b/src/src/macro_predef.c
@@ -161,7 +161,7 @@ due to conflicts with other common macros. */
 #ifndef DISABLE_OCSP
   builtin_macro_create(US"_HAVE_OCSP");
 #endif
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
   builtin_macro_create(US"_HAVE_PIPE_CONNECT");
 #endif
 #ifndef DISABLE_PRDR
diff --git a/src/src/readconf.c b/src/src/readconf.c
index daa88d0..713a1a9 100644
--- a/src/src/readconf.c
+++ b/src/src/readconf.c
@@ -244,7 +244,7 @@ static optionlist optionlist_config[] = {
 #endif
   { "pid_file_path",            opt_stringptr,   &pid_file_path },
   { "pipelining_advertise_hosts", opt_stringptr, &pipelining_advertise_hosts },
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
   { "pipelining_connect_advertise_hosts", opt_stringptr,
                          &pipe_connect_advertise_hosts },
 #endif
@@ -4156,7 +4156,7 @@ Returns:     nothing
 static void
 auths_init(void)
 {
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
 int nauths = 0;
 #endif


@@ -4182,11 +4182,11 @@ for (auth_instance * au = auths; au; au = au->next)
           "(%s and %s) have the same public name (%s)",
           au->client ? US"client" : US"server", au->name, bu->name,
           au->public_name);
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
   nauths++;
 #endif
   }
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
 f.smtp_in_early_pipe_no_auth = nauths > 16;
 #endif
 }
diff --git a/src/src/receive.c b/src/src/receive.c
index 31e3f7c..8361309 100644
--- a/src/src/receive.c
+++ b/src/src/receive.c
@@ -1343,7 +1343,7 @@ if (received_protocol)
 if (LOGGING(pipelining) && f.smtp_in_pipelining_advertised)
   {
   g = string_catn(g, US" L", 2);
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
   if (f.smtp_in_early_pipe_used)
     g = string_catn(g, US"*", 1);
   else if (f.smtp_in_early_pipe_advertised)
diff --git a/src/src/smtp_in.c b/src/src/smtp_in.c
index 6717986..bd29d2c 100644
--- a/src/src/smtp_in.c
+++ b/src/src/smtp_in.c
@@ -142,7 +142,7 @@ static struct {
   BOOL helo_verify            :1;
   BOOL helo_seen            :1;
   BOOL helo_accept_junk            :1;
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
   BOOL pipe_connect_acceptable        :1;
 #endif
   BOOL rcpt_smtp_response_same        :1;
@@ -397,7 +397,7 @@ return TRUE;
 }



-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
static BOOL
pipeline_connect_sends(void)
{
@@ -2992,7 +2992,7 @@ while (*p);
/* Before we write the banner, check that there is no input pending, unless
this synchronisation check is disabled. */

-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
fl.pipe_connect_acceptable =
sender_host_address && verify_check_host(&pipe_connect_advertise_hosts) == OK;

@@ -3019,7 +3019,7 @@ if (!check_sync())
/*XXX the ehlo-resp code does its own tls/nontls bit. Maybe subroutine that? */

smtp_printf("%s",
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
fl.pipe_connect_acceptable && pipeline_connect_sends(),
#else
FALSE,
@@ -3970,7 +3970,7 @@ while (done <= 0)
#endif

   switch(smtp_read_command(
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
       !fl.pipe_connect_acceptable,
 #else
       TRUE,
@@ -4206,7 +4206,7 @@ while (done <= 0)
       host_build_sender_fullhost();  /* Rebuild */
       break;
       }
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
     else if (!fl.pipe_connect_acceptable && !check_sync())
 #else
     else if (!check_sync())
@@ -4339,7 +4339,7 @@ while (done <= 0)
       sync_cmd_limit = NON_SYNC_CMD_PIPELINING;
       f.smtp_in_pipelining_advertised = TRUE;


-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
       if (fl.pipe_connect_acceptable)
         {
         f.smtp_in_early_pipe_advertised = TRUE;
@@ -4457,7 +4457,7 @@ while (done <= 0)
 #ifndef DISABLE_TLS
       if (tls_in.active.sock >= 0)
     (void)tls_write(NULL, g->s, g->ptr,
-# ifdef SUPPORT_PIPE_CONNECT
+# ifndef DISABLE_PIPE_CONNECT
             fl.pipe_connect_acceptable && pipeline_connect_sends());
 # else
             FALSE);
@@ -5235,7 +5235,7 @@ while (done <= 0)
       f.dot_ends = TRUE;


     DATA_BDAT:        /* Common code for DATA and BDAT */
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
       fl.pipe_connect_acceptable = FALSE;
 #endif
       if (!discarded && recipients_count <= 0)
diff --git a/src/src/smtp_out.c b/src/src/smtp_out.c
index ece79de..07cc9b7 100644
--- a/src/src/smtp_out.c
+++ b/src/src/smtp_out.c
@@ -717,7 +717,7 @@ time_t timelimit = time(NULL) + timeout;


errno = 0; /* Ensure errno starts out zero */

-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
 if (sx->pending_BANNER || sx->pending_EHLO)
   {
   int rc;
diff --git a/src/src/structs.h b/src/src/structs.h
index 338dccb..6662e64 100644
--- a/src/src/structs.h
+++ b/src/src/structs.h
@@ -625,7 +625,7 @@ typedef struct address_item {
     BOOL af_tcp_fastopen:1;        /* delivery usefully used TCP Fast Open */
     BOOL af_tcp_fastopen_data:1;    /* delivery sent SMTP commands on TCP Fast Open */
     BOOL af_pipelining:1;        /* delivery used (traditional) pipelining */
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
     BOOL af_early_pipe:1;        /* delivery used connect-time pipelining */
 #endif
 #ifndef DISABLE_PRDR
diff --git a/src/src/tls-openssl.c b/src/src/tls-openssl.c
index 8e1f559..c5e1abf 100644
--- a/src/src/tls-openssl.c
+++ b/src/src/tls-openssl.c
@@ -3517,14 +3517,14 @@ a store reset there, so use POOL_PERM. */


if ((more || corked))
{
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
int save_pool = store_pool;
store_pool = POOL_PERM;
#endif

corked = string_catn(corked, buff, len);

-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
store_pool = save_pool;
#endif

diff --git a/src/src/transports/smtp.c b/src/src/transports/smtp.c
index b45da05..b16b8b1 100644
--- a/src/src/transports/smtp.c
+++ b/src/src/transports/smtp.c
@@ -110,7 +110,7 @@ optionlist smtp_transport_options[] = {
 #endif
   { "hosts_override",       opt_bool,
       (void *)offsetof(smtp_transport_options_block, hosts_override) },
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
   { "hosts_pipe_connect",   opt_stringptr,
       (void *)offsetof(smtp_transport_options_block, hosts_pipe_connect) },
 #endif
@@ -260,7 +260,7 @@ smtp_transport_options_block smtp_transport_option_defaults = {
   .hosts_avoid_tls =        NULL,
   .hosts_verify_avoid_tls =    NULL,
   .hosts_avoid_pipelining =    NULL,
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
   .hosts_pipe_connect =        NULL,
 #endif
   .hosts_avoid_esmtp =        NULL,
@@ -395,7 +395,7 @@ if (!regex_DSN) regex_DSN  =
 if (!regex_IGNOREQUOTA) regex_IGNOREQUOTA =
   regex_must_compile(US"\\n250[\\s\\-]IGNOREQUOTA(\\s|\\n|$)", FALSE, TRUE);


-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
if (!regex_EARLY_PIPE) regex_EARLY_PIPE =
regex_must_compile(US"\\n250[\\s\\-]" EARLY_PIPE_FEATURE_NAME "(\\s|\\n|$)", FALSE, TRUE);
#endif
@@ -868,7 +868,7 @@ return TRUE;



-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
static uschar *
ehlo_cache_key(const smtp_context * sx)
{
@@ -1134,7 +1134,7 @@ address_item * addr = sx->sync_addr;
smtp_transport_options_block * ob = sx->conn_args.ob;
int yield = 0;

-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
 int rc;
 if ((rc = smtp_reap_early_pipe(sx, &count)) != OK)
   return rc == FAIL ? -4 : -5;
@@ -1456,7 +1456,7 @@ smtp_auth(smtp_context * sx)
 host_item * host = sx->conn_args.host;            /* host to deliver to */
 smtp_transport_options_block * ob = sx->conn_args.ob;    /* transport options */
 int require_auth = verify_check_given_host(CUSS &ob->hosts_require_auth, host);
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
 unsigned short authbits = tls_out.active.sock >= 0
       ? sx->ehlo_resp.crypted_auths : sx->ehlo_resp.cleartext_auths;
 #endif
@@ -1472,7 +1472,7 @@ if (!regex_AUTH)


 if (  sx->esmtp
    &&
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
       sx->early_pipe_active ? authbits
       :
 #endif
@@ -1482,7 +1482,7 @@ if (  sx->esmtp
   uschar * names = NULL;
   expand_nmax = -1;                          /* reset */


-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
   if (!sx->early_pipe_active)
 #endif
     names = string_copyn(expand_nstring[1], expand_nlength[1]);
@@ -1496,7 +1496,7 @@ if (  sx->esmtp
     DEBUG(D_transport) debug_printf("scanning authentication mechanisms\n");
     fail_reason = US"no common mechanisms were found";


-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
     if (sx->early_pipe_active)
       {
       /* Scan our authenticators (which support use by a client and were offered
@@ -1853,7 +1853,7 @@ if (  checks & OPTION_SIZE
    && pcre_exec(regex_SIZE, NULL, CS buf, bsize, 0, PCRE_EOPT, NULL, 0) < 0)
   checks &= ~OPTION_SIZE;


-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
 if (  checks & OPTION_EARLY_PIPE
    && pcre_exec(regex_EARLY_PIPE, NULL, CS buf, bsize, 0,
         PCRE_EOPT, NULL, 0) < 0)
@@ -1900,7 +1900,7 @@ there may be more writes (like, the chunk data) done soon. */


 if (chunk_size > 0)
   {
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
   BOOL new_conn = !!(sx->outblock.conn_args);
 #endif
   if((cmd_count = smtp_write_command(sx,
@@ -1909,7 +1909,7 @@ if (chunk_size > 0)
      ) < 0) return ERROR;
   if (flags & tc_chunk_last)
     data_command = string_copy(big_buffer);  /* Save for later error message */
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
   /* That command write could have been the one that made the connection.
   Copy the fd from the client conn ctx (smtp transport specific) to the
   generic transport ctx. */
@@ -1942,7 +1942,7 @@ if (flags & tc_reap_prev  &&  prev_cmd_count > 0)


     case -5: errno = ERRNO_TLSFAILURE;
          return DEFER;
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
     case -4:                /* non-2xx for pipelined banner or EHLO */
 #endif
     case -1:                /* Timeout on RCPT */
@@ -2035,7 +2035,7 @@ sx->conn_args.dane = FALSE;
 sx->dane_required =
   verify_check_given_host(CUSS &ob->hosts_require_dane, sx->conn_args.host) == OK;
 #endif
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
 sx->early_pipe_active = sx->early_pipe_ok = FALSE;
 sx->ehlo_resp.cleartext_features = sx->ehlo_resp.crypted_features = 0;
 sx->pending_BANNER = sx->pending_EHLO = FALSE;
@@ -2164,7 +2164,7 @@ if (!continue_hostname)
   sx->inblock.cctx = sx->outblock.cctx = &sx->cctx;
   sx->avoid_option = sx->peer_offered = smtp_peer_options = 0;


-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
   if (  verify_check_given_host(CUSS &ob->hosts_pipe_connect,
                         sx->conn_args.host) == OK)


@@ -2239,7 +2239,7 @@ will be? Somehow I doubt it. */

   if (!sx->smtps)
     {
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
     if (sx->early_pipe_active)
       {
       sx->pending_BANNER = TRUE;    /* sync_responses() must eventually handle */
@@ -2340,7 +2340,7 @@ goto SEND_QUIT;
   if (sx->esmtp)
     {
     if (smtp_write_command(sx,
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
       sx->early_pipe_active ? SCMD_BUFFER :
 #endif
         SCMD_FLUSH,
@@ -2348,7 +2348,7 @@ goto SEND_QUIT;
       goto SEND_FAILED;
     sx->esmtp_sent = TRUE;


-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
     if (sx->early_pipe_active)
       {
       sx->pending_EHLO = TRUE;
@@ -2381,7 +2381,7 @@ goto SEND_QUIT;
     DEBUG(D_transport)
       debug_printf("not sending EHLO (host matches hosts_avoid_esmtp)\n");


-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
   if (!sx->early_pipe_active)
 #endif
     if (!sx->esmtp)
@@ -2416,13 +2416,13 @@ goto SEND_QUIT;


   if (sx->esmtp || sx->lmtp)
     {
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
     if (!sx->early_pipe_active)
 #endif
       {
       sx->peer_offered = ehlo_response(sx->buffer,
     OPTION_TLS    /* others checked later */
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
     | (sx->early_pipe_ok
       ?   OPTION_IGNQ
         | OPTION_CHUNKING | OPTION_PRDR | OPTION_DSN | OPTION_PIPE | OPTION_SIZE
@@ -2434,7 +2434,7 @@ goto SEND_QUIT;
       )
 #endif
     );
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
       if (sx->early_pipe_ok)
     {
     sx->ehlo_resp.cleartext_features = sx->peer_offered;
@@ -2527,7 +2527,7 @@ if (  smtp_peer_options & OPTION_TLS
   if (smtp_write_command(sx, SCMD_FLUSH, "STARTTLS\r\n") < 0)
     goto SEND_FAILED;


-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
/* If doing early-pipelining reap the banner and EHLO-response but leave
the response for the STARTTLS we just sent alone. */

@@ -2631,7 +2631,7 @@ if (tls_out.active.sock >= 0)
     goto SEND_QUIT;
     }


-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
/* For SMTPS there is no cleartext early-pipe; use the crypted permission bit.
We're unlikely to get the group sent and delivered before the server sends its
banner, but it's still worth sending as a group.
@@ -2649,7 +2649,7 @@ if (tls_out.active.sock >= 0)

   /* For SMTPS we need to wait for the initial OK response. */
   if (sx->smtps)
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
     if (sx->early_pipe_active)
       {
       sx->pending_BANNER = TRUE;
@@ -2672,14 +2672,14 @@ if (tls_out.active.sock >= 0)
     }


   if (smtp_write_command(sx,
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
     sx->early_pipe_active ? SCMD_BUFFER :
 #endif
       SCMD_FLUSH,
     "%s %s\r\n", greeting_cmd, sx->helo_data) < 0)
     goto SEND_FAILED;


-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
   if (sx->early_pipe_active)
     sx->pending_EHLO = TRUE;
   else
@@ -2744,13 +2744,13 @@ if (continue_hostname == NULL
   {
   if (sx->esmtp || sx->lmtp)
     {
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
   if (!sx->early_pipe_active)
 #endif
     {
     sx->peer_offered = ehlo_response(sx->buffer,
     0 /* no TLS */
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
     | (sx->lmtp && ob->lmtp_ignore_quota ? OPTION_IGNQ : 0)
     | OPTION_DSN | OPTION_PIPE | OPTION_SIZE
     | OPTION_CHUNKING | OPTION_PRDR | OPTION_UTF8
@@ -2771,7 +2771,7 @@ if (continue_hostname == NULL
     | (ob->size_addition >= 0 ? OPTION_SIZE : 0)
 #endif
       );
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
     if (tls_out.active.sock >= 0)
       sx->ehlo_resp.crypted_features = sx->peer_offered;
 #endif
@@ -2819,7 +2819,7 @@ if (continue_hostname == NULL
     DEBUG(D_transport) debug_printf("%susing DSN\n",
             sx->peer_offered & OPTION_DSN ? "" : "not ");


-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
     if (  sx->early_pipe_ok
        && !sx->early_pipe_active
        && tls_out.active.sock >= 0
@@ -3335,7 +3335,7 @@ for (addr = sx->first_addr, address_count = 0;
       case -2: return -2;            /* non-MAIL read i/o error */
       default: return -1;            /* any MAIL error */


-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
       case -4: return -1;            /* non-2xx for pipelined banner or EHLO */
       case -5: return -1;            /* TLS first-read error */
 #endif
@@ -3669,7 +3669,7 @@ if (  !(sx.peer_offered & OPTION_CHUNKING)


     case -1: goto END_OFF;        /* Timeout on RCPT */


-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
     case -5:                /* TLS first-read error */
     case -4:  HDEBUG(D_transport)
         debug_printf("failed reaping pipelined cmd responses\n");
@@ -3824,7 +3824,7 @@ else


       case -1: goto END_OFF;        /* Timeout on RCPT */


-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
       case -5:                /* TLS first-read error */
       case -4:  HDEBUG(D_transport)
           debug_printf("failed reaping pipelined cmd responses\n");
@@ -3976,7 +3976,7 @@ else
     if (tcp_out_fastopen >= TFO_USED_DATA) setflag(addr, af_tcp_fastopen_data);
     }
       if (sx.pipelining_used) setflag(addr, af_pipelining);
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
       if (sx.early_pipe_active) setflag(addr, af_early_pipe);
 #endif
 #ifndef DISABLE_PRDR
@@ -4178,7 +4178,7 @@ if (!sx.ok)


     else
       {
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
       /* If we were early-pipelinng and the actual EHLO response did not match
       the cached value we assumed, we could have detected it and passed a
       custom errno through to here.  It would be nice to RSET and retry right
diff --git a/src/src/transports/smtp.h b/src/src/transports/smtp.h
index ac56209..8ea844b 100644
--- a/src/src/transports/smtp.h
+++ b/src/src/transports/smtp.h
@@ -46,7 +46,7 @@ typedef struct {
   uschar *hosts_avoid_tls;
   uschar *hosts_verify_avoid_tls;
   uschar *hosts_avoid_pipelining;
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
   uschar *hosts_pipe_connect;
 #endif
   uschar *hosts_avoid_esmtp;
@@ -121,7 +121,7 @@ typedef struct {
   BOOL smtps:1;
   BOOL ok:1;
   BOOL setting_up:1;
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
   BOOL early_pipe_ok:1;
   BOOL early_pipe_active:1;
 #endif
@@ -138,7 +138,7 @@ typedef struct {
 #if !defined(DISABLE_TLS) && defined(SUPPORT_DANE)
   BOOL dane_required:1;
 #endif
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
   BOOL pending_BANNER:1;
   BOOL pending_EHLO:1;
 #endif
@@ -160,7 +160,7 @@ typedef struct {
   uschar *    smtp_greeting;
   uschar *    helo_response;
 #endif
-#ifdef SUPPORT_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
   ehlo_resp_precis    ehlo_resp;
 #endif