server: fix race condition

This commit is contained in:
aler9
2021-05-04 16:05:01 +02:00
committed by Alessandro Ros
parent f2af7489ff
commit 9e618910ac

View File

@@ -175,18 +175,23 @@ func (sc *ServerConn) run() {
sc.tcpFrameWriteBuffer.Close() sc.tcpFrameWriteBuffer.Close()
<-sc.tcpFrameBackgroundWriteDone <-sc.tcpFrameBackgroundWriteDone
} }
sc.nconn.Close() sc.nconn.Close()
sc.s.connClose <- sc sc.s.connClose <- sc
<-sc.terminate <-sc.terminate
return err return err
case <-sc.terminate: case <-sc.terminate:
sc.nconn.Close()
<-readDone
if sc.tcpFrameEnabled { if sc.tcpFrameEnabled {
sc.tcpFrameWriteBuffer.Close() sc.tcpFrameWriteBuffer.Close()
<-sc.tcpFrameBackgroundWriteDone <-sc.tcpFrameBackgroundWriteDone
} }
sc.nconn.Close()
<-readDone
return liberrors.ErrServerTerminated{} return liberrors.ErrServerTerminated{}
} }
}() }()