On 09/03/2022 21:22, Michael Tratz via Exim-users wrote:
> I have added the following patch:
>
> diff --git a/src/src/transports/smtp.c b/src/src/transports/smtp.c
> index 6a979a243..f97b0c625 100644
> --- a/src/src/transports/smtp.c
> +++ b/src/src/transports/smtp.c
> @@ -4800,7 +4800,11 @@ if (sx->send_quit || tcw_done && !tcw)
> # ifdef EXIM_TCP_CORK
> (void) setsockopt(sx->cctx.sock, IPPROTO_TCP, EXIM_TCP_CORK, US &on, sizeof(on));
> # endif
> - tls_close(sx->cctx.tls_ctx, TLS_SHUTDOWN_WAIT);
> + if (sx->send_tlsclose)
> + {
> + tls_close(sx->cctx.tls_ctx, TLS_SHUTDOWN_WAIT);
> + sx->send_tlsclose = FALSE;
> + }
> sx->cctx.tls_ctx = NULL;
> }
> #endif
>
> Exim has been running for about a week using this patch and I haven't experienced any issues. I don’t know if that is the correct fix or if there is a better way. But I hope it helps in figuring out the root cause of the issue.
The implication of that working is that a tls-shutdown had already been sent... ah,
but not necessarily waited for, and that bit ought to be done at this time.
Which probably means the tls_close() routine needs a richer interface.
I'll have a go at that and see what the testsuite thinks.
--
Cheers,
Jeremy