From 333c47a42a175f5ab4418c8aabfc9813c55ee886 Mon Sep 17 00:00:00 2001 From: Chion Tang Date: Tue, 22 Dec 2015 14:07:04 +0800 Subject: [PATCH] Add keepalive feature for remote connections --- src/redir.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/redir.c b/src/redir.c index 05d6b7dc..b6511bea 100644 --- a/src/redir.c +++ b/src/redir.c @@ -605,6 +605,16 @@ static void accept_cb(EV_P_ ev_io *w, int revents) setsockopt(remotefd, SOL_SOCKET, SO_NOSIGPIPE, &opt, sizeof(opt)); #endif + //Enable TCP keepalive feature + int keepAlive = 1; + int keepIdle = 40; + int keepInterval = 20; + int keepCount = 5; + setsockopt(remotefd, SOL_SOCKET, SO_KEEPALIVE, (void*)&keepAlive, sizeof(keepAlive)); + setsockopt(remotefd, SOL_TCP, TCP_KEEPIDLE, (void*)&keepIdle, sizeof(keepIdle)); + setsockopt(remotefd, SOL_TCP, TCP_KEEPINTVL, (void*)&keepInterval, sizeof(keepInterval)); + setsockopt(remotefd, SOL_TCP, TCP_KEEPCNT, (void*)&keepCount, sizeof(keepCount)); + // Setup setnonblocking(remotefd);