From 2984dc6b7965f0f06b0d4d06178fa343c3107e45 Mon Sep 17 00:00:00 2001 From: Kleissner Date: Mon, 25 Oct 2021 04:50:40 +0200 Subject: [PATCH] UDT: Fix another critical bug. udtSocketRecv.farNextPktSeq was not incremented. Note: The open bug #43 is still pending, although it will give a warning now. The warning can be used as debugging point. --- udt/udtsocket_recv.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/udt/udtsocket_recv.go b/udt/udtsocket_recv.go index f4df38a..34e222f 100644 --- a/udt/udtsocket_recv.go +++ b/udt/udtsocket_recv.go @@ -226,7 +226,8 @@ func (s *udtSocketRecv) ingestData(p *packet.DataPacket, now time.Time) { excluding) these two values into the receiver's loss list and send them to the sender in an NAK packet. */ seqDiff := seq.BlindDiff(s.farNextPktSeq) - if seqDiff > 0 && false { + if seqDiff > 0 { + fmt.Printf("Warning sequence out of order :( Code that follows will crash. Expected %d but received is %d\n", s.farNextPktSeq, p.Seq) newLoss := make(receiveLossHeap, 0, seqDiff) for idx := s.farNextPktSeq; idx != seq; idx.Incr() { newLoss = append(newLoss, recvLossEntry{packetID: seq}) @@ -257,6 +258,8 @@ func (s *udtSocketRecv) ingestData(p *packet.DataPacket, now time.Time) { } else { s.farRecdPktSeq, _ = s.recvLossList.Min(s.farRecdPktSeq, s.farNextPktSeq) } + } else { + s.farNextPktSeq = seq.Add(1) } s.attemptProcessPacket(p, true)