increase legacy highestInOrderObserved properly with reordering

fixes #237
This commit is contained in:
Lucas Clemente
2016-08-04 22:47:42 +02:00
parent 29a02c01cb
commit 7d97bc22ec
2 changed files with 21 additions and 6 deletions

View File

@@ -68,16 +68,21 @@ func (h *receivedPacketHandler) ReceivedPacket(packetNumber protocol.PacketNumbe
h.largestObserved = packetNumber
}
if packetNumber == h.highestInOrderObserved+1 {
h.highestInOrderObserved = packetNumber
h.highestInOrderObservedEntropy.Add(packetNumber, entropyBit)
}
h.packetHistory[packetNumber] = packetHistoryEntry{
EntropyBit: entropyBit,
TimeReceived: time.Now(),
}
// Try to increase highestInOrderObserved as far as possible
for {
p, ok := h.packetHistory[h.highestInOrderObserved+1]
if !ok {
break
}
h.highestInOrderObserved++
h.highestInOrderObservedEntropy.Add(h.highestInOrderObserved, p.EntropyBit)
}
h.garbageCollect()
if uint32(len(h.packetHistory)) > protocol.MaxTrackedReceivedPackets {