[Spice-devel] [spice-server v3 6/6] build-sys: Add configure check for TCP_KEEPIDLE

Christophe Fergeau cfergeau at redhat.com
Thu Mar 16 15:02:11 UTC 2017


This is only available in newer FreeBSD releases (9.1 and later), and
will cause build errors or older versions

This fixes https://bugs.freedesktop.org/show_bug.cgi?id=99213
---
 configure.ac       | 5 +++++
 server/net-utils.c | 2 ++
 2 files changed, 7 insertions(+)

diff --git a/configure.ac b/configure.ac
index f04585f..e5f30a0 100644
--- a/configure.ac
+++ b/configure.ac
@@ -50,6 +50,11 @@ AC_C_BIGENDIAN
 PKG_PROG_PKG_CONFIG
 
 AC_CHECK_HEADERS([sys/time.h execinfo.h linux/sockios.h])
+AC_CHECK_DECL([TCP_KEEPIDLE], [have_tcp_keepidle="yes"],,
+              [#include <netinet/tcp.h>])
+AS_IF([test "x$have_tcp_keepidle" = "xyes"],
+      [AC_DEFINE([HAVE_TCP_KEEPIDLE],1,[Define to 1 if <netinet/tcp.h> has a TCP_KEEPIDLE definition])],
+)
 AC_FUNC_ALLOCA
 
 SPICE_LT_VERSION=m4_format("%d:%d:%d", SPICE_CURRENT, SPICE_REVISION, SPICE_AGE)
diff --git a/server/net-utils.c b/server/net-utils.c
index c316945..34feca0 100644
--- a/server/net-utils.c
+++ b/server/net-utils.c
@@ -53,12 +53,14 @@ bool red_socket_set_keepalive(int fd, bool enable, int timeout)
         return true;
     }
 
+#ifdef HAVE_TCP_KEEPIDLE
     if (setsockopt(fd, SOL_TCP, TCP_KEEPIDLE, &timeout, sizeof(timeout)) == -1) {
         if (errno != ENOTSUP) {
             spice_printerr("setsockopt for keepalive timeout failed, %s", strerror(errno));
             return false;
         }
     }
+#endif
 
     return true;
 }
-- 
2.9.3



More information about the Spice-devel mailing list