forked from quic-go/quic-go
@@ -184,6 +184,11 @@ func (h *sentPacketHandler) ReceivedAck(ackFrame *frames.AckFrameLegacy, withPac
|
||||
|
||||
h.largestReceivedPacketWithAck = withPacketNumber
|
||||
|
||||
// ignore repeated ACK (ACKs that don't have a higher LargestObserved than the last ACK)
|
||||
if ackFrame.LargestObserved <= h.highestInOrderAckedPacketNumber {
|
||||
return nil
|
||||
}
|
||||
|
||||
expectedEntropy, err := h.calculateExpectedEntropy(ackFrame)
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -375,6 +375,19 @@ var _ = Describe("SentPacketHandler", func() {
|
||||
Expect(handler.BytesInFlight()).To(Equal(protocol.ByteCount(3)))
|
||||
})
|
||||
|
||||
It("ignores repeated ACKs", func() {
|
||||
ack := frames.AckFrameLegacy{
|
||||
LargestObserved: 3,
|
||||
}
|
||||
err := handler.ReceivedAck(&ack, 1337)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
Expect(handler.BytesInFlight()).To(Equal(protocol.ByteCount(3)))
|
||||
err = handler.ReceivedAck(&ack, 1337+1)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
Expect(handler.LargestObserved).To(Equal(protocol.PacketNumber(3)))
|
||||
Expect(handler.BytesInFlight()).To(Equal(protocol.ByteCount(3)))
|
||||
})
|
||||
|
||||
It("rejects ACKs with a too high LargestObserved packet number", func() {
|
||||
ack := frames.AckFrameLegacy{
|
||||
LargestObserved: packets[len(packets)-1].PacketNumber + 1337,
|
||||
|
||||
Reference in New Issue
Block a user