diff --git a/transport/internet/splithttp/hub.go b/transport/internet/splithttp/hub.go index b06633afb..d664c86c4 100644 --- a/transport/internet/splithttp/hub.go +++ b/transport/internet/splithttp/hub.go @@ -373,14 +373,6 @@ func (h *requestHandler) ServeHTTP(writer http.ResponseWriter, request *http.Req Reader: request.Body, ResponseWriter: writer, } - // Use the concrete local address this request actually arrived on, - // not the listener's wildcard address (e.g. "[::]" / "0.0.0.0"). Go's - // net/http stores the per-connection local address in the request - // context under LocalAddrContextKey. Without this, sendThrough "origin" - // (which derives the outbound gateway from inbound.Local) reads the - // wildcard and pins every connection's egress to a single address, - // breaking source-in-source-out on multi-IP hosts. Fall back to the - // listener address when the key is absent (e.g. HTTP/3). localAddr := h.localAddr if la, ok := request.Context().Value(http.LocalAddrContextKey).(net.Addr); ok && la != nil { localAddr = la