From a0b7e468ff89796220b962a4bf09b82114539443 Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Tue, 30 Jul 2019 11:02:52 +0700 Subject: [PATCH] optimize deleting of ACK ranges --- internal/ackhandler/received_packet_history.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/internal/ackhandler/received_packet_history.go b/internal/ackhandler/received_packet_history.go index 0daba413d..629beb24e 100644 --- a/internal/ackhandler/received_packet_history.go +++ b/internal/ackhandler/received_packet_history.go @@ -86,10 +86,11 @@ func (h *receivedPacketHistory) DeleteBelow(p protocol.PacketNumber) { for el := h.ranges.Front(); nextEl != nil; el = nextEl { nextEl = el.Next() - if p > el.Value.Start && p <= el.Value.End { - el.Value.Start = p - } else if el.Value.End < p { // delete a whole range + if el.Value.End < p { // delete a whole range h.ranges.Remove(el) + } else if p > el.Value.Start && p <= el.Value.End { + el.Value.Start = p + return } else { // no ranges affected. Nothing to do return }