From 0a2b0c05b363ed08542050735138699c2570f50b Mon Sep 17 00:00:00 2001 From: Sepherosa Ziehau Date: Thu, 19 Apr 2012 14:57:36 +0800 Subject: [PATCH] tcp: Reset keepalive timer, if TCP_KEEPIDLE is changed This would cause side effect, if the keepalive probing was underway. Correcting this side effect could become overkill, so it is suggested that TCP_KEEPIDLE is set before connect(2) or listen(2). --- sys/netinet/tcp_usrreq.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sys/netinet/tcp_usrreq.c b/sys/netinet/tcp_usrreq.c index fe46bc4a80..1b3eb0cb77 100644 --- a/sys/netinet/tcp_usrreq.c +++ b/sys/netinet/tcp_usrreq.c @@ -1428,10 +1428,12 @@ tcp_ctloutput(netmsg_t msg) case TCP_KEEPIDLE: opthz = ((int64_t)optval * hz) / 1000; - if (opthz >= 1) + if (opthz >= 1) { tp->t_keepidle = opthz; - else + tcp_timer_keep_activity(tp, 0); + } else { error = EINVAL; + } break; case TCP_KEEPINTVL: -- 2.41.0