From 24bae46e429aa54d0b9da29adf06192a799dd520 Mon Sep 17 00:00:00 2001
From: Matt Johnston <matt@ucc.asn.au>
Date: Fri, 7 Aug 2015 21:02:49 +0800
Subject: [PATCH] only update keepalive timeout post-auth (when keepalives are
 sent)

---
 common-session.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/common-session.c b/common-session.c
index 4b7e38c1..2485cd82 100644
--- a/common-session.c
+++ b/common-session.c
@@ -533,11 +533,11 @@ static void checktimeouts() {
 }
 
 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))
 	if (last_event > 0 && limit > 0) {
 		*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(opts.keepalive_secs, now, 
-		MAX(ses.last_packet_time_keepalive_recv, ses.last_packet_time_keepalive_sent),
-		&timeout);
+	if (ses.authstate.authdone) {
+		update_timeout(opts.keepalive_secs, now, 
+			MAX(ses.last_packet_time_keepalive_recv, ses.last_packet_time_keepalive_sent),
+			&timeout);
+	}
 
 	update_timeout(opts.idle_timeout_secs, now, ses.last_packet_time_idle,
 		&timeout);
 
-	TRACE(("timeout %ld", timeout))
-
 	/* clamp negative timeouts to zero - event has already triggered */
 	return MAX(timeout, 0);
 }
-- 
GitLab