LibreSSL: TLS-write-shutdown does not push data
authorJeremy Harris <jgh146exb@wizmail.org>
Mon, 28 Jun 2021 21:17:22 +0000 (22:17 +0100)
committerJeremy Harris <jgh146exb@wizmail.org>
Mon, 28 Jun 2021 21:17:22 +0000 (22:17 +0100)
src/src/exim.h
src/src/transports/smtp.c

index 8bbeecb4de4748b6fed1174ecdc1e5951c06ed57..484276bb21a73fa0688c0a624b7487d233385134 100644 (file)
@@ -659,5 +659,13 @@ default to EDQUOT if it exists, otherwise ENOSPC. */
 # define EXIM_TCP_CORK TCP_NOPUSH
 #endif
 
+/* LibreSSL seems to not push out the SMTP response to QUIT with our usual
+handling which is trying to get the client to FIN first so that the server does
+not get the TIME_WAIT */
+
+#if !defined(DISABLE_TLS) && defined(USE_OPENSSL) && defined(LIBRESSL_VERSION_NUMBER)
+# define SERVERSIDE_CLOSE_NOWAIT
+#endif
+
 #endif
 /* End of exim.h */
index dfb4a928492ddcf71aabf84e59e3efc428492365..3210e596c4f68a9e0a5261d5151acb3043ffbbbb 100644 (file)
@@ -4102,7 +4102,7 @@ else
       sx->send_quit = FALSE;   /* avoid sending it later */
 
 #ifndef DISABLE_TLS
-      if (sx->cctx.tls_ctx)    /* need to send TLS Cloe Notify */
+      if (sx->cctx.tls_ctx)    /* need to send TLS Close Notify */
        {
 # ifdef EXIM_TCP_CORK          /* Use _CORK to get Close Notify in FIN segment */
        (void) setsockopt(sx->cctx.sock, IPPROTO_TCP, EXIM_TCP_CORK, US &on, sizeof(on));