fix: nil HTTP recorder ref in WebSocket goroutines, add tunnel loop detection

- handler/http/websocket, forwarder/sniffer_ws, sniffing/sniffer_ws: nil
  ro2.HTTP in WebSocket copy goroutines to avoid data races on the shared
  HTTP recorder object
- handler/tunnel/bind: remove ingress rule check that incorrectly
  overrode the endpoint host for non-matching ingress rules
- handler/tunnel/entrypoint: add forwarding loop detection by checking
  Gost-Forwarded-Node header for the entrypoint's own node ID
This commit is contained in:
ginuerzh
2026-06-01 18:28:01 +08:00
parent 5a09a48b2d
commit 382d47ea12
5 changed files with 24 additions and 3 deletions
+1
View File
@@ -51,6 +51,7 @@ func (h *httpHandler) copyWebsocketDirection(ctx context.Context, r io.Reader, w
}
ro2 := &xrecorder.HandlerRecorderObject{}
*ro2 = *ro
ro2.HTTP = nil
r2 := ro2
limiter := rate.NewLimiter(rate.Limit(sampleRate), int(sampleRate))