Merge pull request #3051 from q191201771/merge-packet-number-ranges

refactor merge packet number ranges
This commit is contained in:
Marten Seemann
2021-02-24 13:37:11 +08:00
committed by GitHub

View File

@@ -44,23 +44,19 @@ func (h *receivedPacketHistory) addToRanges(p protocol.PacketNumber) bool /* is
return false return false
} }
var rangeExtended bool
if el.Value.End == p-1 { // extend a range at the end if el.Value.End == p-1 { // extend a range at the end
rangeExtended = true
el.Value.End = p el.Value.End = p
} else if el.Value.Start == p+1 { // extend a range at the beginning return true
rangeExtended = true
el.Value.Start = p
} }
if el.Value.Start == p+1 { // extend a range at the beginning
el.Value.Start = p
// if a range was extended (either at the beginning or at the end, maybe it is possible to merge two ranges into one)
if rangeExtended {
prev := el.Prev() prev := el.Prev()
if prev != nil && prev.Value.End+1 == el.Value.Start { // merge two ranges if prev != nil && prev.Value.End+1 == el.Value.Start { // merge two ranges
prev.Value.End = el.Value.End prev.Value.End = el.Value.End
h.ranges.Remove(el) h.ranges.Remove(el)
} }
return true // if the two ranges were not merge, we're done here return true
} }
// create a new range at the end // create a new range at the end