diff --git a/internal/ackhandler/interfaces.go b/internal/ackhandler/interfaces.go index a2249b351..d0bce26e7 100644 --- a/internal/ackhandler/interfaces.go +++ b/internal/ackhandler/interfaces.go @@ -27,6 +27,7 @@ type SentPacketHandler interface { // Before sending any packet, SendingAllowed() must be called to learn if we can actually send it. ShouldSendNumPackets() int + // only to be called once the handshake is complete GetLowestPacketNotConfirmedAcked() protocol.PacketNumber DequeuePacketForRetransmission() *Packet DequeueProbePacket() (*Packet, error) diff --git a/session.go b/session.go index 3021e782d..69d2cf7a2 100644 --- a/session.go +++ b/session.go @@ -726,7 +726,9 @@ func (s *session) handleAckFrame(frame *wire.AckFrame, pn protocol.PacketNumber, if err := s.sentPacketHandler.ReceivedAck(frame, pn, encLevel, s.lastNetworkActivityTime); err != nil { return err } - s.receivedPacketHandler.IgnoreBelow(s.sentPacketHandler.GetLowestPacketNotConfirmedAcked()) + if encLevel == protocol.Encryption1RTT { + s.receivedPacketHandler.IgnoreBelow(s.sentPacketHandler.GetLowestPacketNotConfirmedAcked()) + } return nil } diff --git a/session_test.go b/session_test.go index d7a70b9a9..f0bb07963 100644 --- a/session_test.go +++ b/session_test.go @@ -159,7 +159,6 @@ var _ = Describe("Session", func() { f := &wire.AckFrame{AckRanges: []wire.AckRange{{Smallest: 2, Largest: 3}}} sph := mockackhandler.NewMockSentPacketHandler(mockCtrl) sph.EXPECT().ReceivedAck(f, protocol.PacketNumber(42), protocol.EncryptionHandshake, gomock.Any()) - sph.EXPECT().GetLowestPacketNotConfirmedAcked() sess.sentPacketHandler = sph err := sess.handleAckFrame(f, 42, protocol.EncryptionHandshake) Expect(err).ToNot(HaveOccurred()) @@ -174,7 +173,7 @@ var _ = Describe("Session", func() { rph := mockackhandler.NewMockReceivedPacketHandler(mockCtrl) rph.EXPECT().IgnoreBelow(protocol.PacketNumber(0x42)) sess.receivedPacketHandler = rph - Expect(sess.handleAckFrame(ack, 0, protocol.EncryptionInitial)).To(Succeed()) + Expect(sess.handleAckFrame(ack, 0, protocol.Encryption1RTT)).To(Succeed()) }) })