From 4faf22895637b9ecf113789bc0f97ceb3a421695 Mon Sep 17 00:00:00 2001 From: Danny August Ramaputra Date: Thu, 28 Oct 2021 00:38:18 +1000 Subject: [PATCH] fix: nil pointer on clear of disconnected controller --- fableous-be/handlers/websocket.go | 4 +++- fableous-be/utils/websocket.go | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/fableous-be/handlers/websocket.go b/fableous-be/handlers/websocket.go index f5873c0c..1094b6ce 100644 --- a/fableous-be/handlers/websocket.go +++ b/fableous-be/handlers/websocket.go @@ -230,7 +230,9 @@ func (m *module) HubCommandWorker(conn *websocket.Conn, sess *activeSession) (er // check if CONTROL message clears a controller's canvas if clearedController := message.Data.(*pb.WSMessage_Control).Control.Clear; clearedController != pb.ControllerRole_NONE { _ = utils.SendMessage(sess.hubConn, message) - _ = utils.SendMessage(sess.controllerConn[clearedController], message) + if targetConn, ok := sess.controllerConn[clearedController]; ok { + _ = utils.SendMessage(targetConn, message) + } } // check if CONTROL message kicks a controller if kickedController := message.Data.(*pb.WSMessage_Control).Control.Kick; kickedController != pb.ControllerRole_NONE { diff --git a/fableous-be/utils/websocket.go b/fableous-be/utils/websocket.go index ccd6265c..f5a2766e 100644 --- a/fableous-be/utils/websocket.go +++ b/fableous-be/utils/websocket.go @@ -15,6 +15,9 @@ var sendMutex sync.Mutex // SendMessage sends a message to the WebSocket client. func SendMessage(conn *websocket.Conn, message *pb.WSMessage) (err error) { + if conn == nil { + return + } var bytes []byte if bytes, err = proto.Marshal(message); err != nil { return