From eaf213f3c0ed0ea0aa117ea2680fcdbe52ac4249 Mon Sep 17 00:00:00 2001 From: Ian Gulliver Date: Wed, 2 Mar 2016 22:07:48 -0800 Subject: [PATCH] Set TCP_USERTIMEOUT even on send sockets, to detect stuck processes on the other end. --- adsbus/socket.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/adsbus/socket.c b/adsbus/socket.c index aa998a8..207460e 100644 --- a/adsbus/socket.c +++ b/adsbus/socket.c @@ -29,6 +29,9 @@ void socket_ready(int fd) { assert(!setsockopt(fd, IPPROTO_TCP, TCP_KEEPINTVL, &optval, sizeof(optval))); optval = 3; assert(!setsockopt(fd, IPPROTO_TCP, TCP_KEEPCNT, &optval, sizeof(optval))); + + optval = 60000; // 60s + assert(!setsockopt(fd, IPPROTO_TCP, TCP_USER_TIMEOUT, &optval, sizeof(optval))); } void socket_ready_send(int fd) { @@ -40,12 +43,7 @@ void socket_ready_send(int fd) { assert(res == 0); optval = 128; // Lowest value that the kernel will accept - res = setsockopt(fd, IPPROTO_TCP, TCP_WINDOW_CLAMP, &optval, sizeof(optval)); - assert(res == 0); - - optval = 60000; // 60s - res = setsockopt(fd, IPPROTO_TCP, TCP_USER_TIMEOUT, &optval, sizeof(optval)); - assert(res == 0); + assert(!setsockopt(fd, IPPROTO_TCP, TCP_WINDOW_CLAMP, &optval, sizeof(optval))); } void socket_connected_send(int fd) {