diff --git a/ackhandler/received_packet_handler.go b/ackhandler/received_packet_handler.go index 2aeecb86..e20fc416 100644 --- a/ackhandler/received_packet_handler.go +++ b/ackhandler/received_packet_handler.go @@ -53,7 +53,8 @@ func (h *receivedPacketHandler) ReceivedStopWaiting(f *frames.StopWaitingFrame) return nil } - h.highestInOrderObserved = f.LeastUnacked + // the LeastUnacked is the smallest packet number of any packet for which the sender is still awaiting an ack. So the highestInOrderObserved is one less than that + h.highestInOrderObserved = f.LeastUnacked - 1 h.highestInOrderObservedEntropy = EntropyAccumulator(f.Entropy) return nil diff --git a/ackhandler/received_packet_handler_test.go b/ackhandler/received_packet_handler_test.go index 06815529..f218ddad 100644 --- a/ackhandler/received_packet_handler_test.go +++ b/ackhandler/received_packet_handler_test.go @@ -214,16 +214,16 @@ var _ = Describe("receivedPacketHandler", func() { Expect(err).ToNot(HaveOccurred()) _, e := handler.getNackRanges() Expect(e).To(Equal(42 ^ expectedAfterStopWaiting)) - Expect(handler.highestInOrderObserved).To(Equal(protocol.PacketNumber(12))) + Expect(handler.highestInOrderObserved).To(Equal(protocol.PacketNumber(11))) Expect(handler.highestInOrderObservedEntropy).To(Equal(EntropyAccumulator(42))) }) - It("does not emit nack ranges after STOP_WAITING", func() { + It("does not emit NACK ranges after STOP_WAITING", func() { err := handler.ReceivedPacket(10, false) Expect(err).ToNot(HaveOccurred()) ranges, _ := handler.getNackRanges() Expect(ranges).To(HaveLen(1)) - err = handler.ReceivedStopWaiting(&frames.StopWaitingFrame{Entropy: 0, LeastUnacked: protocol.PacketNumber(9)}) + err = handler.ReceivedStopWaiting(&frames.StopWaitingFrame{Entropy: 0, LeastUnacked: protocol.PacketNumber(10)}) Expect(err).ToNot(HaveOccurred()) ranges, _ = handler.getNackRanges() Expect(ranges).To(HaveLen(0))