fix deadlock.

This commit is contained in:
Miroslav Šedivý 2021-09-18 00:56:03 +02:00
parent 6bd46b438e
commit 137614c087
3 changed files with 15 additions and 29 deletions

View file

@ -67,21 +67,18 @@ func (peer *WebSocketPeerCtx) Send(event string, payload interface{}) {
}
func (peer *WebSocketPeerCtx) Destroy(reason string) {
peer.mu.Lock()
defer peer.mu.Unlock()
if peer.connection == nil {
return
}
peer.Send(
event.SYSTEM_DISCONNECT,
message.SystemDisconnect{
Message: reason,
})
err := peer.connection.Close()
peer.logger.Err(err).Msg("peer connection destroyed")
peer.mu.Lock()
defer peer.mu.Unlock()
peer.connection = nil
if peer.connection != nil {
err := peer.connection.Close()
peer.logger.Err(err).Msg("peer connection destroyed")
peer.connection = nil
}
}