Logging: restrict TFO client-side to Linux
authorJeremy Harris <jgh146exb@wizmail.org>
Sat, 2 Sep 2017 15:16:43 +0000 (16:16 +0100)
committerJeremy Harris <jgh146exb@wizmail.org>
Sat, 2 Sep 2017 15:16:43 +0000 (16:16 +0100)
The detection method depends on a getsockopt struct member apparently
not supported by FreeBSD (at least).  Other platforms status unknown.

doc/doc-txt/NewStuff
src/OS/os.h-Linux
src/src/smtp_out.c

index e57192e..8ea1708 100644 (file)
@@ -49,7 +49,8 @@ Version 4.90
 
 12. TCP Fast Open logging.  As a server, logs when the SMTP banner was sent
     while still in SYN_RECV state; as a client logs when the connection
-    is opened with a TFO cookie.
+    is opened with a TFO cookie.  Support varies between platforms
+    (Linux does both. FreeBSD server only, others unknown).
 
 
 Version 4.89
index 5703464..f6d3577 100644 (file)
@@ -72,11 +72,14 @@ then change the 0 to 1 in the next block. */
 # define EXIM_HAVE_OPENAT
 #endif
 
+/* TCP Fast Open support */
+
 #include <netinet/tcp.h>       /* for TCP_FASTOPEN */
 #include <sys/socket.h>                /* for MSG_FASTOPEN */
 #if defined(TCP_FASTOPEN) && !defined(MSG_FASTOPEN)
 # define MSG_FASTOPEN 0x20000000
 #endif
+#define EXIM_HAVE_TCPI_UNACKED
 
 
 /* End */
index d5bf262..ee39cb2 100644 (file)
@@ -144,7 +144,7 @@ return TRUE;
 static void
 tfo_out_check(int sock)
 {
-# ifdef TCP_INFO
+# if defined(TCP_INFO) && defined(EXIM_HAVE_TCPI_UNACKED)
 struct tcp_info tinfo;
 socklen_t len = sizeof(tinfo);