limit number of ACK ranges in ReceivedPacketHistory

fixes #195
This commit is contained in:
Marten Seemann
2016-10-28 12:10:56 +07:00
parent 6551a150e3
commit 2c11335de4
5 changed files with 65 additions and 12 deletions

View File

@@ -83,14 +83,28 @@ var _ = Describe("receivedPacketHandler", func() {
})
It("doesn't store more than MaxTrackedReceivedPackets packets", func() {
for i := protocol.PacketNumber(0); i < protocol.MaxTrackedReceivedPackets; i++ {
packetNumber := protocol.PacketNumber(1 + 2*i)
err := handler.ReceivedPacket(packetNumber)
err := handler.ReceivedPacket(1)
Expect(err).ToNot(HaveOccurred())
for i := protocol.PacketNumber(3); i < 3+protocol.MaxTrackedReceivedPackets-1; i++ {
err := handler.ReceivedPacket(protocol.PacketNumber(i))
Expect(err).ToNot(HaveOccurred())
}
err := handler.ReceivedPacket(protocol.PacketNumber(3 * protocol.MaxTrackedReceivedPackets))
err = handler.ReceivedPacket(protocol.PacketNumber(protocol.MaxTrackedReceivedPackets) + 10)
Expect(err).To(MatchError(errTooManyOutstandingReceivedPackets))
})
It("passes on errors from receivedPacketHistory", func() {
var err error
for i := protocol.PacketNumber(0); i < 5*protocol.MaxTrackedReceivedAckRanges; i++ {
err = handler.ReceivedPacket(2*i + 1)
// this will eventually return an error
// details about when exactly the receivedPacketHistory errors are tested there
if err != nil {
break
}
}
Expect(err).To(MatchError(errTooManyOutstandingReceivedAckRanges))
})
})
Context("handling STOP_WAITING frames", func() {