correctly treat LeastUnacked value in a StopWaitingFrame

This commit is contained in:
Marten Seemann
2016-04-30 19:00:01 +07:00
parent f3e7fd438e
commit 733873fa5e
2 changed files with 5 additions and 4 deletions

View File

@@ -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

View File

@@ -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))