From 9e618910ac4eca99a1037071afb51a3aea5de64d Mon Sep 17 00:00:00 2001 From: aler9 <46489434+aler9@users.noreply.github.com> Date: Tue, 4 May 2021 16:05:01 +0200 Subject: [PATCH] server: fix race condition --- serverconn.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/serverconn.go b/serverconn.go index 068573b1..3bd84cb9 100644 --- a/serverconn.go +++ b/serverconn.go @@ -175,18 +175,23 @@ func (sc *ServerConn) run() { sc.tcpFrameWriteBuffer.Close() <-sc.tcpFrameBackgroundWriteDone } + sc.nconn.Close() sc.s.connClose <- sc + <-sc.terminate + return err case <-sc.terminate: + sc.nconn.Close() + <-readDone + if sc.tcpFrameEnabled { sc.tcpFrameWriteBuffer.Close() <-sc.tcpFrameBackgroundWriteDone } - sc.nconn.Close() - <-readDone + return liberrors.ErrServerTerminated{} } }()