From c878b68b70276d7cd31ef74d76e7e51ddfedb47f Mon Sep 17 00:00:00 2001 From: aler9 <46489434+aler9@users.noreply.github.com> Date: Mon, 10 May 2021 21:33:23 +0200 Subject: [PATCH] fix various race conditions --- clientconn.go | 2 ++ server.go | 2 ++ serverconn.go | 2 ++ serversession.go | 2 ++ 4 files changed, 8 insertions(+) diff --git a/clientconn.go b/clientconn.go index dbcad03f..727c1f79 100644 --- a/clientconn.go +++ b/clientconn.go @@ -301,6 +301,8 @@ outer: } } + cc.ctxCancel() + cc.doClose(false) } diff --git a/server.go b/server.go index 21a376e4..a4e1e8ef 100644 --- a/server.go +++ b/server.go @@ -336,6 +336,8 @@ outer: } } + s.ctxCancel() + if s.udpRTCPListener != nil { s.udpRTCPListener.close() } diff --git a/serverconn.go b/serverconn.go index de24a21e..9ff56471 100644 --- a/serverconn.go +++ b/serverconn.go @@ -235,6 +235,8 @@ func (sc *ServerConn) run() { } }() + sc.ctxCancel() + if sc.tcpFrameEnabled { sc.tcpFrameWriteBuffer.Close() <-sc.tcpFrameBackgroundWriteDone diff --git a/serversession.go b/serversession.go index d2d1dde8..c66fe831 100644 --- a/serversession.go +++ b/serversession.go @@ -318,6 +318,8 @@ func (ss *ServerSession) run() { } }() + ss.ctxCancel() + switch ss.state { case ServerSessionStatePlay: if *ss.setupProtocol == StreamProtocolUDP {