From 5bdbff929de561bc72d341a0104760f779a55ef5 Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Fri, 26 Mar 2021 09:25:01 +0700 Subject: [PATCH] don't regard PMTU probe packets as outstanding This also means that PMTU probe packets won't be sent as PTO probe packets. --- internal/ackhandler/sent_packet_history.go | 5 +++-- internal/ackhandler/sent_packet_history_test.go | 8 ++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/internal/ackhandler/sent_packet_history.go b/internal/ackhandler/sent_packet_history.go index 6ed44ad04..36489367d 100644 --- a/internal/ackhandler/sent_packet_history.go +++ b/internal/ackhandler/sent_packet_history.go @@ -64,8 +64,9 @@ func (h *sentPacketHistory) Iterate(cb func(*Packet) (cont bool, err error)) err // FirstOutStanding returns the first outstanding packet. func (h *sentPacketHistory) FirstOutstanding() *Packet { for el := h.packetList.Front(); el != nil; el = el.Next() { - if !el.Value.declaredLost && !el.Value.skippedPacket { - return &el.Value + p := &el.Value + if !p.declaredLost && !p.skippedPacket && !p.IsPathMTUProbePacket { + return p } } return nil diff --git a/internal/ackhandler/sent_packet_history_test.go b/internal/ackhandler/sent_packet_history_test.go index f691954dc..bf876d321 100644 --- a/internal/ackhandler/sent_packet_history_test.go +++ b/internal/ackhandler/sent_packet_history_test.go @@ -87,6 +87,14 @@ var _ = Describe("SentPacketHistory", func() { Expect(front).ToNot(BeNil()) Expect(front.PacketNumber).To(Equal(protocol.PacketNumber(2))) }) + + It("doesn't regard path MTU packets as outstanding", func() { + hist.SentPacket(&Packet{PacketNumber: 2}, true) + hist.SentPacket(&Packet{PacketNumber: 4, IsPathMTUProbePacket: true}, true) + front := hist.FirstOutstanding() + Expect(front).ToNot(BeNil()) + Expect(front.PacketNumber).To(Equal(protocol.PacketNumber(2))) + }) }) It("removes packets", func() {