From: Jeremy Harris <jgh146exb@wizmail.org>
Date: Sun, 16 Feb 2020 21:03:46 +0000 (+0000)
Subject: Fix continued-connection SIZE parameter on MAIL commmand.  Bug 2525
X-Git-Tag: exim-4_94_RC0~106
X-Git-Url: https://vcs.fsf.org/?a=commitdiff_plain;h=5bf8a51681e171328e72f5d5b5ef8fd8a67d5f05;p=exim.git

Fix continued-connection SIZE parameter on MAIL commmand.  Bug 2525
---

diff --git a/doc/doc-txt/ChangeLog b/doc/doc-txt/ChangeLog
index 22ea6ad7b..116df90d0 100644
--- a/doc/doc-txt/ChangeLog
+++ b/doc/doc-txt/ChangeLog
@@ -126,6 +126,11 @@ JH/25 Fix use of concurrent TLS connections under GnuTLS.  When a callout was
       used rather than per-connection info for tracking the state of data
       queued for transmission.  This could result in a connection hang.
 
+JH/26 Fix use of the SIZE parameter on MAIL commands, on continued connections.
+      Previously, when delivering serveral messages down a single connection
+      only the first would provide a SIZE.  This was due to the size information
+      not being properly tracked.
+
 
 Exim version 4.93
 -----------------
diff --git a/src/src/transports/smtp.c b/src/src/transports/smtp.c
index b748b7657..5c5f37d2b 100644
--- a/src/src/transports/smtp.c
+++ b/src/src/transports/smtp.c
@@ -2377,6 +2377,7 @@ else
     }
   sx->inblock.cctx = sx->outblock.cctx = &sx->cctx;
   smtp_command = big_buffer;
+  sx->peer_offered = smtp_peer_options;
   sx->helo_data = NULL;		/* ensure we re-expand ob->helo_data */
 
   /* For a continued connection with TLS being proxied for us, or a
@@ -2387,7 +2388,6 @@ else
          && cutthrough.is_tls)
      )
     {
-    sx->peer_offered = smtp_peer_options;
     sx->pipelining_used = pipelining_active = !!(smtp_peer_options & OPTION_PIPE);
     HDEBUG(D_transport) debug_printf("continued connection, %s TLS\n",
       continue_proxy_cipher ? "proxied" : "verify conn with");
@@ -3512,7 +3512,6 @@ always has a sequence number greater than one. */
 
 if (continue_hostname && continue_sequence == 1)
   {
-  sx->peer_offered = smtp_peer_options;
   /* sx->pending_MAIL = FALSE; */
   sx->ok = TRUE;
   /* sx->next_addr = NULL; */