fix calculation of the handshake idle timeout

This commit is contained in:
Marten Seemann
2021-03-23 17:19:43 +08:00
parent 37a3938543
commit 63e810f0d8
2 changed files with 5 additions and 1 deletions

View File

@@ -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

View File

@@ -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.