From f76b94e749cff6662f9732830bbe76f1cfc68eeb Mon Sep 17 00:00:00 2001 From: Denis Arh Date: Tue, 22 Feb 2022 14:57:41 +0100 Subject: [PATCH] Add extra panic-recovery for websocket write & ping fn --- pkg/websocket/session.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pkg/websocket/session.go b/pkg/websocket/session.go index 31a23fb14..fcdc70541 100644 --- a/pkg/websocket/session.go +++ b/pkg/websocket/session.go @@ -223,6 +223,12 @@ func (s *session) writeLoop() error { }() write := func(msg []byte) (err error) { + defer func() { + if recErr := recover(); recErr != nil { + s.logger.Debug("recovering from write panic", zap.Error(err)) + } + }() + if s.conn == nil { // Connection closed, nowhere to write return @@ -240,6 +246,12 @@ func (s *session) writeLoop() error { } ping := func() (err error) { + defer func() { + if recErr := recover(); recErr != nil { + s.logger.Debug("recovering from ping panic", zap.Error(err)) + } + }() + if s.conn == nil { // Connection closed, nothing to ping return