Logging: pipelining log_selector
[exim.git] / src / src / deliver.c
index 7127518e2c1df84af330f04d819279d6b5f8f258..3a395724d58aa879e5130a023ddbb05467691241 100644 (file)
@@ -1234,6 +1234,9 @@ else
       }
     }
 
+  if (LOGGING(pipelining) && testflag(addr, af_pipelining))
+    g = string_catn(g, US" L", 2);
+
 #ifndef DISABLE_PRDR
   if (testflag(addr, af_prdr_used))
     g = string_catn(g, US" PRDR", 5);
@@ -3551,6 +3554,13 @@ while (!done)
       break;
 #endif
 
+    case 'L':
+      switch (*subid)
+       {
+       case 1: setflag(addr, af_pipelining); break;
+       }
+      break;
+
     case 'K':
       setflag(addr, af_chunking_used);
       break;
@@ -4856,6 +4866,9 @@ all pipes, so I do not see a reason to use non-blocking IO here
        rmt_dlv_checked_write(fd, 'P', '0', NULL, 0);
 #endif
 
+      if (testflag(addr, af_pipelining))
+         rmt_dlv_checked_write(fd, 'L', '1', NULL, 0);
+
       if (testflag(addr, af_chunking_used))
        rmt_dlv_checked_write(fd, 'K', '0', NULL, 0);
 
@@ -8454,6 +8467,11 @@ if (!regex_AUTH) regex_AUTH =
 #ifdef SUPPORT_TLS
 if (!regex_STARTTLS) regex_STARTTLS =
   regex_must_compile(US"\\n250[\\s\\-]STARTTLS(\\s|\\n|$)", FALSE, TRUE);
+
+# ifdef EXPERIMENTAL_REQUIRETLS
+if (!regex_REQUIRETLS) regex_REQUIRETLS =
+  regex_must_compile(US"\\n250[\\s\\-]REQUIRETLS(\\s|\\n|$)", FALSE, TRUE);
+# endif
 #endif
 
 if (!regex_CHUNKING) regex_CHUNKING =
@@ -8531,7 +8549,7 @@ uschar * where;
 
 if (cutthrough.cctx.sock >= 0 && cutthrough.callout_hold_only)
   {
-  int pfd[2], channel_fd = cutthrough.cctx.sock, pid;
+  int channel_fd = cutthrough.cctx.sock;
 
   smtp_peer_options = cutthrough.peer_options;
   continue_sequence = 0;
@@ -8539,6 +8557,8 @@ if (cutthrough.cctx.sock >= 0 && cutthrough.callout_hold_only)
 #ifdef SUPPORT_TLS
   if (cutthrough.is_tls)
     {
+    int pfd[2], pid;
+
     smtp_peer_options |= OPTION_TLS;
     sending_ip_address = cutthrough.snd_ip;
     sending_port = cutthrough.snd_port;