Merge pull request #1222 from lucas-clemente/ack-in-packet-0

accept ACKs sent in packet number 0
This commit is contained in:
Marten Seemann
2018-03-07 08:02:38 +07:00
committed by GitHub
2 changed files with 11 additions and 2 deletions

View File

@@ -157,8 +157,7 @@ func (h *sentPacketHandler) ReceivedAck(ackFrame *wire.AckFrame, withPacketNumbe
}
// duplicate or out-of-order ACK
// if withPacketNumber <= h.largestReceivedPacketWithAck && withPacketNumber != 0 {
if withPacketNumber <= h.largestReceivedPacketWithAck {
if withPacketNumber != 0 && withPacketNumber <= h.largestReceivedPacketWithAck {
return ErrDuplicateOrOutOfOrderAck
}
h.largestReceivedPacketWithAck = withPacketNumber

View File

@@ -207,6 +207,16 @@ var _ = Describe("SentPacketHandler", func() {
}
Context("ACK validation", func() {
It("accepts ACKs sent in packet 0", func() {
ack := wire.AckFrame{
LargestAcked: 5,
LowestAcked: 1,
}
err := handler.ReceivedAck(&ack, 0, protocol.EncryptionUnencrypted, time.Now())
Expect(err).ToNot(HaveOccurred())
Expect(handler.largestAcked).To(Equal(protocol.PacketNumber(5)))
})
It("rejects duplicate ACKs", func() {
largestAcked := 3
ack := wire.AckFrame{