summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
266d3dd)
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 <jonathan.rajotte-julien@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
/* Per-platform definitions of TCP socket options. */
#if defined (__linux__)
/* 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
#define COMPAT_TCP_LEVEL SOL_TCP
#define COMPAT_TCP_ABORT_THRESHOLD 0 /* Does not exist on linux. */
#define COMPAT_TCP_KEEPIDLE TCP_KEEPIDLE
#elif defined (__sun__) /* ! defined (__linux__) */
#elif defined (__sun__) /* ! defined (__linux__) */
-#define COMPAT_SOCKET_LEVEL SOL_SOCKET
#define COMPAT_TCP_LEVEL IPPROTO_TCP
#ifdef TCP_KEEPALIVE_THRESHOLD
#define COMPAT_TCP_LEVEL IPPROTO_TCP
#ifdef TCP_KEEPALIVE_THRESHOLD
#else /* ! defined (__linux__) && ! defined (__sun__) */
#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
#define COMPAT_TCP_LEVEL 0
#define COMPAT_TCP_ABORT_THRESHOLD 0
#define COMPAT_TCP_KEEPIDLE 0
- 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");
sizeof(val));
if (ret < 0) {
PERROR("setsockopt so_keepalive");