summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJeremy Harris <jgh146exb@wizmail.org>2020-03-10 17:06:26 +0000
committerJeremy Harris <jgh146exb@wizmail.org>2020-03-10 17:06:26 +0000
commit4ca005cdf526b0c6803c29a154bd85dc112bc6a3 (patch)
treea5c7c572072bc27e43bc9dfdcfc25c1ccb0ab16c /src
parent691ca88ca06899e02e77cb28fbf075de450607bc (diff)
Early-pipe: retry without pipelining on first-response failure
Diffstat (limited to 'src')
-rw-r--r--src/src/transports/smtp.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/src/transports/smtp.c b/src/src/transports/smtp.c
index 13410b839..6f999097a 100644
--- a/src/src/transports/smtp.c
+++ b/src/src/transports/smtp.c
@@ -2079,6 +2079,7 @@ if (!continue_hostname)
else DEBUG(D_transport)
debug_printf("helo needs $sending_ip_address\n");
+PIPE_CONNECT_RETRY:
if (sx->early_pipe_active)
sx->outblock.conn_args = &sx->conn_args;
else
@@ -2425,7 +2426,10 @@ if ( smtp_peer_options & OPTION_TLS
{
HDEBUG(D_transport)
debug_printf("failed reaping pipelined cmd responses\n");
- goto RESPONSE_FAILED;
+ close(sx->cctx.sock);
+ sx->cctx.sock = -1;
+ sx->early_pipe_active = FALSE;
+ goto PIPE_CONNECT_RETRY;
}
#endif