From 43113e60de840dee0c7c2c042574ccd488ee6fe6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20Jir=C3=A9nius?= Date: Sun, 10 May 2026 21:18:07 +0200 Subject: [PATCH 1/2] GH-269: Explicitly call of Close on websocket during dispose. --- server/wsConn.go | 7 ++++++- test/ws.go | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/server/wsConn.go b/server/wsConn.go index 04bda25..7348438 100644 --- a/server/wsConn.go +++ b/server/wsConn.go @@ -127,6 +127,11 @@ func (c *wsConn) dispose() { close(c.work) c.mu.Unlock() + // Explicity close websocket + if c.ws != nil { + _ = c.ws.Close() + } + c.serv.cache.RemoveConn(c) c.unsubscribeConn() @@ -185,7 +190,7 @@ func (c *wsConn) Tracef(format string, v ...interface{}) { func (c *wsConn) Disconnect(reason string) { if c.ws != nil { c.Tracef("Disconnecting - %s", reason) - c.ws.Close() + _ = c.ws.Close() } } diff --git a/test/ws.go b/test/ws.go index f6e8110..d4d6ee7 100644 --- a/test/ws.go +++ b/test/ws.go @@ -121,7 +121,7 @@ func (c *Conn) Disconnect() { c.s.dcCh = dcCh } - c.ws.Close() + _ = c.ws.Close() <-c.closeCh // Await synchronization From 5fa64f31ff6336f8291bd18e6c2667873481bd3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20Jir=C3=A9nius?= Date: Mon, 11 May 2026 08:03:34 +0200 Subject: [PATCH 2/2] GH-269: Fixed race issue that caused test to fail. --- server/metricsServer.go | 6 +++--- server/wsConn.go | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/server/metricsServer.go b/server/metricsServer.go index d23e209..961bf4a 100644 --- a/server/metricsServer.go +++ b/server/metricsServer.go @@ -65,12 +65,12 @@ func (s *Service) startMetricsServer() { go func() { var err error if s.cfg.TLS { - err = s.m.ServeTLS(hln, s.cfg.TLSCert, s.cfg.TLSKey) + err = metricsServer.ServeTLS(hln, s.cfg.TLSCert, s.cfg.TLSKey) } else { - err = s.m.Serve(hln) + err = metricsServer.Serve(hln) } - if err != nil { + if err != nil && err != http.ErrServerClosed { s.Stop(err) } }() diff --git a/server/wsConn.go b/server/wsConn.go index 7348438..4600992 100644 --- a/server/wsConn.go +++ b/server/wsConn.go @@ -127,7 +127,7 @@ func (c *wsConn) dispose() { close(c.work) c.mu.Unlock() - // Explicity close websocket + // Explicitly close websocket if c.ws != nil { _ = c.ws.Close() }