fix(ws): close response body to prevent resource leak
The WebSocket dialer returns a response that was never closed, causing a resource leak. Now closes the response body on error.
cognitive committed
Dec 30, 2025 at 00:22 UTC
bf68eaf338e157c796f50bc53f8e6873f47dd9e0
1 file changed
+5
-1
utils/ws.go
+5
-1
@@ -14,10 +14,14 @@ import (
14
// and wraps them as io.ReadWriteCloser.
15
func NewWebSocketDialer() func(context.Context, string) (io.ReadWriteCloser, error) {
16
return func(ctx context.Context, url string) (io.ReadWriteCloser, error) {
17
- wsConn, _, err := websocket.DefaultDialer.Dial(url, nil)
17
+ wsConn, resp, err := websocket.DefaultDialer.Dial(url, nil)
18
if err != nil {
19
+ if resp != nil {
20
+ resp.Body.Close()
21
+ }
22
return nil, err
23
}
24
+ // Response body is closed by the Dialer on successful connection
25
return &wsstream.WsStream{Conn: wsConn}, nil
26
}
27
}