From fc5f54824af1a979a3f414987e0d1a5fce11184c Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Sun, 28 Jan 2018 17:59:37 +0700 Subject: [PATCH] only send one ACK for every 10 retransmittable packets --- ackhandler/received_packet_handler_test.go | 14 +++++++++----- internal/protocol/server_parameters.go | 2 +- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/ackhandler/received_packet_handler_test.go b/ackhandler/received_packet_handler_test.go index 10246bd80..f8eab7cf7 100644 --- a/ackhandler/received_packet_handler_test.go +++ b/ackhandler/received_packet_handler_test.go @@ -95,13 +95,17 @@ var _ = Describe("receivedPacketHandler", func() { Expect(handler.GetAlarmTimeout()).To(BeZero()) }) - It("queues an ACK for every second retransmittable packet, if they are arriving fast", func() { + It("queues an ACK for every RetransmittablePacketsBeforeAck retransmittable packet, if they are arriving fast", func() { receiveAndAck10Packets() - err := handler.ReceivedPacket(11, time.Time{}, true) - Expect(err).ToNot(HaveOccurred()) - Expect(handler.ackQueued).To(BeFalse()) + p := protocol.PacketNumber(11) + for i := 0; i < protocol.RetransmittablePacketsBeforeAck-1; i++ { + err := handler.ReceivedPacket(p, time.Time{}, true) + Expect(err).ToNot(HaveOccurred()) + Expect(handler.ackQueued).To(BeFalse()) + p++ + } Expect(handler.GetAlarmTimeout()).NotTo(BeZero()) - err = handler.ReceivedPacket(12, time.Time{}, true) + err := handler.ReceivedPacket(p, time.Time{}, true) Expect(err).ToNot(HaveOccurred()) Expect(handler.ackQueued).To(BeTrue()) Expect(handler.GetAlarmTimeout()).To(BeZero()) diff --git a/internal/protocol/server_parameters.go b/internal/protocol/server_parameters.go index e5c1cd5c2..e0aad6cff 100644 --- a/internal/protocol/server_parameters.go +++ b/internal/protocol/server_parameters.go @@ -94,7 +94,7 @@ const MaxTrackedReceivedAckRanges = DefaultMaxCongestionWindow const MaxNonRetransmittablePackets = 19 // RetransmittablePacketsBeforeAck is the number of retransmittable that an ACK is sent for -const RetransmittablePacketsBeforeAck = 2 +const RetransmittablePacketsBeforeAck = 10 // MaxStreamFrameSorterGaps is the maximum number of gaps between received StreamFrames // prevents DoS attacks against the streamFrameSorter