delete retransmitted packets from QUIC 34 SentPacketHandler packetHistory

fixes #188
This commit is contained in:
Marten Seemann
2016-06-24 16:41:04 +07:00
parent 38c0c3d0aa
commit fe1fb7a5f4
4 changed files with 31 additions and 18 deletions

View File

@@ -106,8 +106,6 @@ func (h *sentPacketHandler) queuePacketForRetransmission(packet *Packet) {
h.bytesInFlight -= packet.Length
h.retransmissionQueue = append(h.retransmissionQueue, packet)
packet.Retransmitted = true
// TODO: delete from packetHistory once we drop support for version smaller than QUIC 33
}
func (h *sentPacketHandler) SentPacket(packet *Packet) error {

View File

@@ -459,6 +459,7 @@ var _ = Describe("SentPacketHandler", func() {
Expect(err).ToNot(HaveOccurred())
}
packet := handler.DequeuePacketForRetransmission()
Expect(packet).ToNot(BeNil())
Expect(packet.PacketNumber).To(Equal(protocol.PacketNumber(3)))
Expect(handler.DequeuePacketForRetransmission()).To(BeNil())
})
@@ -473,6 +474,7 @@ var _ = Describe("SentPacketHandler", func() {
Expect(err).ToNot(HaveOccurred())
}
packet := handler.DequeuePacketForRetransmission()
Expect(packet).ToNot(BeNil())
Expect(packet.PacketNumber).To(Equal(protocol.PacketNumber(2)))
packet = handler.DequeuePacketForRetransmission()
Expect(packet.PacketNumber).To(Equal(protocol.PacketNumber(4)))
@@ -491,8 +493,10 @@ var _ = Describe("SentPacketHandler", func() {
_, err := handler.nackPacket(4)
Expect(err).ToNot(HaveOccurred())
}
_ = handler.DequeuePacketForRetransmission()
_ = handler.DequeuePacketForRetransmission()
packet := handler.DequeuePacketForRetransmission()
Expect(packet).ToNot(BeNil())
packet = handler.DequeuePacketForRetransmission()
Expect(packet).ToNot(BeNil())
Expect(handler.DequeuePacketForRetransmission()).To(BeNil())
})
@@ -508,7 +512,7 @@ var _ = Describe("SentPacketHandler", func() {
Expect(handler.highestInOrderAckedPacketNumber).To(Equal(protocol.PacketNumber(2)))
})
It("does not retransmit a packet if a belated was received", func() {
It("does not retransmit a packet if a belated ACK was received", func() {
// lose packet by NACKing it often enough
for i := uint8(0); i < protocol.RetransmissionThreshold+1; i++ {
_, err := handler.nackPacket(2)