From 3ce9479197a8f43fa301fbe43dc3864d4b761d43 Mon Sep 17 00:00:00 2001 From: Tiger Lee Date: Thu, 17 Sep 2020 17:47:46 +0800 Subject: [PATCH] Avoid to block thread while write to a nil channel if session disconnected during sendBytes, session.messageOut may be set to nil before write in session.onDisconnect() --- session.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/session.go b/session.go index ab53935e5..b359245e2 100644 --- a/session.go +++ b/session.go @@ -367,6 +367,11 @@ func (s *session) EnqueueBytesAndSend(msg []byte) { } func (s *session) sendBytes(msg []byte) { + if s.messageOut == nil { + s.log.OnEventf("Failed to send: disconnected") + return + } + s.log.OnOutgoing(msg) s.messageOut <- msg s.stateTimer.Reset(s.HeartBtInt)