only update keepalive timeout post-auth (when keepalives are sent)

This commit is contained in:
Matt Johnston 2015-08-07 21:02:49 +08:00
parent 7585d4606e
commit 24bae46e42

View File

@ -533,11 +533,11 @@ static void checktimeouts() {
} }
static void update_timeout(long limit, long now, long last_event, long * timeout) { static void update_timeout(long limit, long now, long last_event, long * timeout) {
TRACE(("update_timeout limit %ld, now %ld, last %ld, timeout %ld", TRACE2(("update_timeout limit %ld, now %ld, last %ld, timeout %ld",
limit, now, last_event, *timeout)) limit, now, last_event, *timeout))
if (last_event > 0 && limit > 0) { if (last_event > 0 && limit > 0) {
*timeout = MIN(*timeout, last_event+limit-now); *timeout = MIN(*timeout, last_event+limit-now);
TRACE(("update to %ld", *timeout)) TRACE2(("new timeout %ld", *timeout))
} }
} }
@ -554,15 +554,15 @@ static long select_timeout() {
update_timeout(AUTH_TIMEOUT, now, ses.connect_time, &timeout); update_timeout(AUTH_TIMEOUT, now, ses.connect_time, &timeout);
} }
if (ses.authstate.authdone) {
update_timeout(opts.keepalive_secs, now, update_timeout(opts.keepalive_secs, now,
MAX(ses.last_packet_time_keepalive_recv, ses.last_packet_time_keepalive_sent), MAX(ses.last_packet_time_keepalive_recv, ses.last_packet_time_keepalive_sent),
&timeout); &timeout);
}
update_timeout(opts.idle_timeout_secs, now, ses.last_packet_time_idle, update_timeout(opts.idle_timeout_secs, now, ses.last_packet_time_idle,
&timeout); &timeout);
TRACE(("timeout %ld", timeout))
/* clamp negative timeouts to zero - event has already triggered */ /* clamp negative timeouts to zero - event has already triggered */
return MAX(timeout, 0); return MAX(timeout, 0);
} }