From c78a2f6f97c2cee96373d0914faa7cf2a1a21d4e Mon Sep 17 00:00:00 2001 From: Travis Glenn Hansen <travisghansen@yahoo.com> Date: Wed, 23 May 2012 12:15:10 -0600 Subject: [PATCH] setting keepalive option on srvsock --- fanout.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/fanout.c b/fanout.c index bb79ccc..0246bb2 100644 --- a/fanout.c +++ b/fanout.c @@ -138,7 +138,8 @@ int main (int argc, char *argv[]) { int srvsock, epollfd, nfds, efd, n, res; int portno = 1986; - u_int yes = 1; + int optval; + socklen_t optlen = sizeof(optval); u_int listen_backlog = 25; u_int max_events = 25; FILE *pidfile; @@ -310,7 +311,10 @@ fs.file-max=100000\n"); serv_addr.sin_addr.s_addr = INADDR_ANY; serv_addr.sin_port = htons (portno); - setsockopt (srvsock, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof (yes)); + if ((setsockopt (srvsock, SOL_SOCKET, SO_REUSEADDR, &optval, optlen)) == -1) + fanout_error ("failed setting reuseaddr"); + if ((setsockopt (srvsock, SOL_SOCKET, SO_KEEPALIVE, &optval, optlen)) == -1) + fanout_error ("failed setting keepalive"); if (bind (srvsock, (struct sockaddr *) &serv_addr, sizeof (serv_addr)) < 0) { @@ -516,6 +520,7 @@ resetting counter\n"); clients_count = 0; } clients_count++; + } else { // Process events of other sockets... client_i = client_head; -- GitLab