From 876ccd899b7036f522e1c0d8e0582d2678754eac Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Sun, 25 Oct 2020 13:22:33 +0700 Subject: [PATCH] CONNECTION_CLOSE frames are not ack-eliciting --- internal/ackhandler/ack_eliciting.go | 5 +++-- internal/ackhandler/ack_eliciting_test.go | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/internal/ackhandler/ack_eliciting.go b/internal/ackhandler/ack_eliciting.go index 15fa87a34..b8cd558ae 100644 --- a/internal/ackhandler/ack_eliciting.go +++ b/internal/ackhandler/ack_eliciting.go @@ -4,8 +4,9 @@ import "github.com/lucas-clemente/quic-go/internal/wire" // IsFrameAckEliciting returns true if the frame is ack-eliciting. func IsFrameAckEliciting(f wire.Frame) bool { - _, ok := f.(*wire.AckFrame) - return !ok + _, isAck := f.(*wire.AckFrame) + _, isConnectionClose := f.(*wire.ConnectionCloseFrame) + return !isAck && !isConnectionClose } // HasAckElicitingFrames returns true if at least one frame is ack-eliciting. diff --git a/internal/ackhandler/ack_eliciting_test.go b/internal/ackhandler/ack_eliciting_test.go index f38bc1ac6..ccbf8673c 100644 --- a/internal/ackhandler/ack_eliciting_test.go +++ b/internal/ackhandler/ack_eliciting_test.go @@ -11,8 +11,8 @@ import ( var _ = Describe("ack-eliciting frames", func() { for fl, el := range map[wire.Frame]bool{ &wire.AckFrame{}: false, + &wire.ConnectionCloseFrame{}: false, &wire.DataBlockedFrame{}: true, - &wire.ConnectionCloseFrame{}: true, &wire.PingFrame{}: true, &wire.ResetStreamFrame{}: true, &wire.StreamFrame{}: true,