ackhandler: account for skipped packets in packet threshold calculation (#5316)

This commit is contained in:
Marten Seemann
2025-08-29 11:39:41 +08:00
committed by GitHub
parent 9cd98f48bf
commit 0bef51ec76
3 changed files with 48 additions and 1 deletions

View File

@@ -296,3 +296,29 @@ func TestSentPacketHistoryPathProbes(t *testing.T) {
require.Equal(t, protocol.InvalidPacketNumber, pn)
require.Nil(t, p)
}
func TestSentPacketHistoryDifference(t *testing.T) {
hist := newSentPacketHistory(true)
hist.SentNonAckElicitingPacket(0)
hist.SentAckElicitingPacket(1, &packet{})
hist.SentAckElicitingPacket(2, &packet{})
hist.SentAckElicitingPacket(3, &packet{})
hist.SkippedPacket(4)
hist.SkippedPacket(5)
hist.SentAckElicitingPacket(6, &packet{})
hist.SentNonAckElicitingPacket(7)
hist.SkippedPacket(8)
hist.SentAckElicitingPacket(9, &packet{})
require.Zero(t, hist.Difference(1, 1))
require.Zero(t, hist.Difference(2, 2))
require.Zero(t, hist.Difference(7, 7))
require.Equal(t, protocol.PacketNumber(1), hist.Difference(2, 1))
require.Equal(t, protocol.PacketNumber(2), hist.Difference(3, 1))
require.Equal(t, protocol.PacketNumber(3), hist.Difference(4, 1))
require.Equal(t, protocol.PacketNumber(3), hist.Difference(6, 1)) // 4 and 5 were skipped
require.Equal(t, protocol.PacketNumber(4), hist.Difference(7, 1)) // 4 and 5 were skipped
require.Equal(t, protocol.PacketNumber(3), hist.Difference(7, 2)) // 4 and 5 were skipped
require.Equal(t, protocol.PacketNumber(5), hist.Difference(9, 1)) // 4, 5 and 8 were skipped
}