UDT: Minor ticker change in recv. Make sure it is always closed.

This commit is contained in:
Kleissner
2022-01-17 17:00:05 +01:00
parent 86cf8e1fe8
commit 700fc30586

View File

@@ -35,22 +35,22 @@ type udtSocketRecv struct {
func newUdtSocketRecv(s *udtSocket) *udtSocketRecv {
sr := &udtSocketRecv{
socket: s,
sockClosed: s.sockClosed,
recvEvent: s.recvEvent,
messageIn: s.messageIn,
sendPacket: s.sendPacket,
recvPktPend: createPacketHeap(),
recvLossList: createPacketIDHeap(),
ackHistory: createHistoryHeap(),
resendACKTimer: make(chan time.Time),
socket: s,
sockClosed: s.sockClosed,
recvEvent: s.recvEvent,
messageIn: s.messageIn,
sendPacket: s.sendPacket,
recvPktPend: createPacketHeap(),
recvLossList: createPacketIDHeap(),
ackHistory: createHistoryHeap(),
}
go sr.goReceiveEvent()
// set the timer for constantly resending ACKs for the highest sequence ID and NAKs for missing packets
sr.resendACKTicker = *time.NewTicker(s.Config.SynTime)
sr.resendACKTimer = sr.resendACKTicker.C
go sr.goReceiveEvent()
return sr
}
@@ -62,6 +62,8 @@ func (s *udtSocketRecv) configureHandshake(p *packet.HandshakePacket) {
}
func (s *udtSocketRecv) goReceiveEvent() {
defer s.resendACKTicker.Stop()
recvEvent := s.recvEvent
sockClosed := s.sockClosed
for {
@@ -81,7 +83,6 @@ func (s *udtSocketRecv) goReceiveEvent() {
s.ingestError(sp)
}
case <-sockClosed: // socket is closed, leave now
s.resendACKTicker.Stop()
return
case <-s.resendACKTimer: // handles both resending ACKs and NAKs
if s.recvAck2.IsLess(s.sentAck) {