From 63e810f0d8a2b850233e2c1b929523e6a760d908 Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Tue, 23 Mar 2021 17:19:43 +0800 Subject: [PATCH] fix calculation of the handshake idle timeout --- session.go | 5 ++++- session_test.go | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/session.go b/session.go index 9e1bd4c16..368a4b95a 100644 --- a/session.go +++ b/session.go @@ -740,7 +740,10 @@ func (s *session) nextKeepAliveTime() time.Time { func (s *session) maybeResetTimer() { var deadline time.Time if !s.handshakeComplete { - deadline = s.sessionCreationTime.Add(utils.MinDuration(s.config.handshakeTimeout(), s.config.HandshakeIdleTimeout)) + deadline = utils.MinTime( + s.sessionCreationTime.Add(s.config.handshakeTimeout()), + s.idleTimeoutStartTime().Add(s.config.HandshakeIdleTimeout), + ) } else { if keepAliveTime := s.nextKeepAliveTime(); !keepAliveTime.IsZero() { deadline = keepAliveTime diff --git a/session_test.go b/session_test.go index 67fb5bf63..aad54ad3b 100644 --- a/session_test.go +++ b/session_test.go @@ -2158,6 +2158,7 @@ var _ = Describe("Session", func() { }) It("doesn't send a PING if the handshake isn't completed yet", func() { + sess.config.HandshakeIdleTimeout = time.Hour sess.handshakeComplete = false // Needs to be shorter than our idle timeout. // Otherwise we'll try to send a CONNECTION_CLOSE.