From: Jonathan Rajotte Date: Wed, 21 Feb 2018 21:59:54 +0000 (-0500) Subject: Fix: Use SOL_SOCKET level for SO_KEEPALIVE on all platform X-Git-Tag: v2.9.8~3 X-Git-Url: https://git.lttng.org./?a=commitdiff_plain;h=9134f880a0a321221dcd6d3e5b3c1729f8db7281;p=lttng-tools.git Fix: Use SOL_SOCKET level for SO_KEEPALIVE on all platform On Linux, COMPAT_SOCKET_LEVEL was set to SOL_TCP instead of SOL_SOCKET, this resulted in execution of: setsockopt(..., SOL_TCP, TCP_DEFER_ACCEPT, ...) Instead of: setsockopt(..., SOL_SOCKET, SO_KEEPALIVE, ...) Hence, TCP keep alive was not enabled. COMPAT_SOCKET_LEVEL is not needed. All platforms supported use the SOL_SOCKET level for SO_KEEPALIVE. Signed-off-by: Jonathan Rajotte Signed-off-by: Jérémie Galarneau --- diff --git a/src/bin/lttng-relayd/tcp_keep_alive.c b/src/bin/lttng-relayd/tcp_keep_alive.c index 4a2cd9f1b..469bec31d 100644 --- a/src/bin/lttng-relayd/tcp_keep_alive.c +++ b/src/bin/lttng-relayd/tcp_keep_alive.c @@ -36,7 +36,6 @@ /* Per-platform definitions of TCP socket options. */ #if defined (__linux__) -#define COMPAT_SOCKET_LEVEL SOL_TCP #define COMPAT_TCP_LEVEL SOL_TCP #define COMPAT_TCP_ABORT_THRESHOLD 0 /* Does not exist on linux. */ #define COMPAT_TCP_KEEPIDLE TCP_KEEPIDLE @@ -45,7 +44,6 @@ #elif defined (__sun__) /* ! defined (__linux__) */ -#define COMPAT_SOCKET_LEVEL SOL_SOCKET #define COMPAT_TCP_LEVEL IPPROTO_TCP #ifdef TCP_KEEPALIVE_THRESHOLD @@ -65,7 +63,6 @@ #else /* ! defined (__linux__) && ! defined (__sun__) */ -#define COMPAT_SOCKET_LEVEL 0 #define COMPAT_TCP_LEVEL 0 #define COMPAT_TCP_ABORT_THRESHOLD 0 #define COMPAT_TCP_KEEPIDLE 0 @@ -547,7 +544,7 @@ int socket_apply_keep_alive_config(int socket_fd) goto end; } - ret = setsockopt(socket_fd, COMPAT_SOCKET_LEVEL, SO_KEEPALIVE, &val, + ret = setsockopt(socket_fd, SOL_SOCKET, SO_KEEPALIVE, &val, sizeof(val)); if (ret < 0) { PERROR("setsockopt so_keepalive");