aboutsummaryrefslogtreecommitdiffstats
path: root/relay/server.go
diff options
context:
space:
mode:
Diffstat (limited to 'relay/server.go')
-rw-r--r--relay/server.go5
1 files changed, 4 insertions, 1 deletions
diff --git a/relay/server.go b/relay/server.go
index 085929c..d4a1edd 100644
--- a/relay/server.go
+++ b/relay/server.go
@@ -98,7 +98,10 @@ func (s *Server) handleWS(w http.ResponseWriter, r *http.Request) {
98 s.mu.Add(1) 98 s.mu.Add(1)
99 go func() { 99 go func() {
100 defer s.mu.Done() 100 defer s.mu.Done()
101 ctx := r.Context() 101 // r.Context() is cancelled by the HTTP server when Hijack is called,
102 // so we use a fresh context. The connection manages its own lifecycle
103 // via the ping loop and WebSocket close frames.
104 ctx := context.Background()
102 h.serve(ctx) 105 h.serve(ctx)
103 if err := c.CloseConn(); err != nil { 106 if err := c.CloseConn(); err != nil {
104 // Ignore close errors — connection may already be gone. 107 // Ignore close errors — connection may already be gone.