don't queue ACKs for non-retransmittable packets for QUIC >= 39

From QUIC 39 on, the peer is required to send a retransmittable packet
when it wishes to receive an ACK.
This commit is contained in:
Marten Seemann
2017-08-07 15:58:01 +07:00
parent 79bb3a9bd3
commit 6bdd782a4b
3 changed files with 23 additions and 7 deletions

View File

@@ -16,7 +16,7 @@ var _ = Describe("receivedPacketHandler", func() {
)
BeforeEach(func() {
handler = NewReceivedPacketHandler().(*receivedPacketHandler)
handler = NewReceivedPacketHandler(protocol.VersionWhatever).(*receivedPacketHandler)
})
Context("accepting packets", func() {
@@ -115,6 +115,16 @@ var _ = Describe("receivedPacketHandler", func() {
Expect(handler.GetAlarmTimeout()).To(BeZero())
})
It("doesn't queue an ACK for non-retransmittable packets, for QUIC >= 39", func() {
receiveAndAck10Packets()
handler.version = protocol.Version39
for i := 11; i < 10+10*protocol.MaxPacketsReceivedBeforeAckSend; i++ {
err := handler.ReceivedPacket(protocol.PacketNumber(i), false)
Expect(err).ToNot(HaveOccurred())
Expect(handler.ackQueued).To(BeFalse())
}
})
It("queues an ACK for every second retransmittable packet, if they are arriving fast", func() {
receiveAndAck10Packets()
err := handler.ReceivedPacket(11, true)