send retransmission in the right order

fixes #62
This commit is contained in:
Marten Seemann
2016-05-08 23:03:40 +07:00
parent 833475a2ed
commit dbcf5b8cce
3 changed files with 10 additions and 8 deletions

View File

@@ -32,7 +32,7 @@ type sentPacketHandler struct {
// TODO: Move into separate class as in chromium
packetHistory map[protocol.PacketNumber]*Packet
retransmissionQueue []*Packet // ToDo: use better data structure
retransmissionQueue []*Packet
stopWaitingManager StopWaitingManager
bytesInFlight protocol.ByteCount
@@ -210,8 +210,10 @@ func (h *sentPacketHandler) DequeuePacketForRetransmission() (packet *Packet) {
if len(h.retransmissionQueue) == 0 {
return nil
}
packet = h.retransmissionQueue[0]
h.retransmissionQueue = h.retransmissionQueue[1:]
queueLen := len(h.retransmissionQueue)
// packets are usually NACKed in descending order. So use the slice as a stack
packet = h.retransmissionQueue[queueLen-1]
h.retransmissionQueue = h.retransmissionQueue[:queueLen-1]
return packet
}