Disable server-side close timing sophistication on MacOS
authorJeremy Harris <jgh146exb@wizmail.org>
Mon, 5 Apr 2021 12:41:50 +0000 (13:41 +0100)
committerJeremy Harris <jgh146exb@wizmail.org>
Mon, 5 Apr 2021 12:43:28 +0000 (13:43 +0100)
Broken-by: 001bf8f587
src/OS/os.h-Darwin
src/src/smtp_in.c

index 1a557d829ef5dcbfa3c18363a5a3be1b51c2c0f6..a85e92f0567f146d477bf3460bce4a7ae3ec84d4 100644 (file)
@@ -56,4 +56,9 @@ in "man 2 getgroups". */
 rather than a modified sendto() */
 #define EXIM_TFO_CONNECTX
 
+/* MacOS, at least on the buildfarm animal, does not seem to 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 */
+#define SERVERSIDE_CLOSE_NOWAIT
+
 /* End */
index 5888b8037036691c5f24d575103d49f5d83f05b4..2bb15b6985ab28e5b5c8208456c1a06bb0e06fec 100644 (file)
@@ -3847,9 +3847,18 @@ if (*user_msgp)
 else
   smtp_printf("221 %s closing connection\r\n", FALSE, smtp_active_hostname);
 
-#ifndef DISABLE_TLS
+#ifdef SERVERSIDE_CLOSE_NOWAIT
+# ifndef DISABLE_TLS
+tls_close(NULL, TLS_SHUTDOWN_NOWAIT);
+# endif
+
+log_write(L_smtp_connection, LOG_MAIN, "%s closed by QUIT",
+  smtp_get_connection_info());
+#else
+
+# ifndef DISABLE_TLS
 tls_close(NULL, TLS_SHUTDOWN_WAIT);
-#endif
+# endif
 
 log_write(L_smtp_connection, LOG_MAIN, "%s closed by QUIT",
   smtp_get_connection_info());
@@ -3866,6 +3875,7 @@ The socket should become readble (though with no data) */
   FD_SET(fd, &fds);
   (void) select(fd + 1, (SELECT_ARG2_TYPE *)&fds, NULL, NULL, &t_limit);
   }
+#endif /*!DAEMON_CLOSE_NOWAIT*/
 }