From 0f32fbc631875bb729c74b839328fdf541bfed9a Mon Sep 17 00:00:00 2001 From: Sean Liao Date: Sun, 16 Nov 2025 00:26:27 +0000 Subject: [PATCH] net/http: populate Response.Request when using NewFileTransport Fixes #51562 Change-Id: Ia6fe4728b1e3e0cf3a6462be99c1044260cadf31 Reviewed-on: https://go-review.googlesource.com/c/go/+/720822 LUCI-TryBot-Result: Go LUCI Reviewed-by: Damien Neil Reviewed-by: Mark Freeman --- src/net/http/filetransport.go | 5 +++-- src/net/http/filetransport_test.go | 3 +++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/net/http/filetransport.go b/src/net/http/filetransport.go index b08bae6348..8f2cbb2517 100644 --- a/src/net/http/filetransport.go +++ b/src/net/http/filetransport.go @@ -57,7 +57,7 @@ func (t fileTransport) RoundTrip(req *Request) (resp *Response, err error) { // sends our *Response on, once the *Response itself has been // populated (even if the body itself is still being // written to the res.Body, a pipe) - rw, resc := newPopulateResponseWriter() + rw, resc := newPopulateResponseWriter(req) go func() { t.fh.ServeHTTP(rw, req) rw.finish() @@ -65,7 +65,7 @@ func (t fileTransport) RoundTrip(req *Request) (resp *Response, err error) { return <-resc, nil } -func newPopulateResponseWriter() (*populateResponse, <-chan *Response) { +func newPopulateResponseWriter(req *Request) (*populateResponse, <-chan *Response) { pr, pw := io.Pipe() rw := &populateResponse{ ch: make(chan *Response), @@ -76,6 +76,7 @@ func newPopulateResponseWriter() (*populateResponse, <-chan *Response) { Header: make(Header), Close: true, Body: pr, + Request: req, }, } return rw, rw.ch diff --git a/src/net/http/filetransport_test.go b/src/net/http/filetransport_test.go index b3e3301e10..a255c4b4ad 100644 --- a/src/net/http/filetransport_test.go +++ b/src/net/http/filetransport_test.go @@ -53,6 +53,9 @@ func TestFileTransport(t *testing.T) { if string(slurp) != "Bar" { t.Errorf("for %s, got content %q, want %q", urlstr, string(slurp), "Bar") } + if got := res.Request.URL.String(); got != urlstr { + t.Errorf("for %s, Response.Request.URL = %s, want = %s", urlstr, got, urlstr) + } } const badURL = "file://../no-exist.txt" -- 2.52.0