optimize updating the RTT when receiving an ACK

This commit is contained in:
Marten Seemann
2018-03-11 12:13:29 +07:00
parent 9ffeba5445
commit 6a80d50fb9
3 changed files with 22 additions and 14 deletions

View File

@@ -239,20 +239,11 @@ func (h *sentPacketHandler) determineNewlyAckedPackets(ackFrame *wire.AckFrame)
}
func (h *sentPacketHandler) maybeUpdateRTT(largestAcked protocol.PacketNumber, ackDelay time.Duration, rcvTime time.Time) bool {
var rttUpdated bool
h.packetHistory.Iterate(func(p *Packet) (bool, error) {
if p.PacketNumber == largestAcked {
h.rttStats.UpdateRTT(rcvTime.Sub(p.sendTime), ackDelay, rcvTime)
rttUpdated = true
return false, nil
}
// Packets are sorted by number, so we can stop searching
if p.PacketNumber > largestAcked {
return false, nil
}
return true, nil
})
return rttUpdated
if p := h.packetHistory.GetPacket(largestAcked); p != nil {
h.rttStats.UpdateRTT(rcvTime.Sub(p.sendTime), ackDelay, rcvTime)
return true
}
return false
}
func (h *sentPacketHandler) updateLossDetectionAlarm(now time.Time) {