From 2b7ed61ca22743598db2b407a94b8865042f1078 Mon Sep 17 00:00:00 2001 From: Blake Mizerany Date: Mon, 25 Nov 2024 15:08:34 -0800 Subject: [PATCH] server: fix Transport override (#7834) This changes makeRequest to update the http client Transport if and only if testMakeRequestDialContext is set. This is to avoid overriding the default Transport when testMakeRequestDialContext is nil, which broke existing behavior, included proxies, timeouts, and other behaviors. Fixes #7829 Fixes #7788 --- server/images.go | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/server/images.go b/server/images.go index 1f6a9712..29877db3 100644 --- a/server/images.go +++ b/server/images.go @@ -1076,17 +1076,15 @@ func makeRequest(ctx context.Context, method string, requestURL *url.URL, header req.ContentLength = contentLength } - resp, err := (&http.Client{ - Transport: &http.Transport{ - DialContext: testMakeRequestDialContext, - }, + c := &http.Client{ CheckRedirect: regOpts.CheckRedirect, - }).Do(req) - if err != nil { - return nil, err } - - return resp, nil + if testMakeRequestDialContext != nil { + tr := http.DefaultTransport.(*http.Transport).Clone() + tr.DialContext = testMakeRequestDialContext + c.Transport = tr + } + return c.Do(req) } func getValue(header, key string) string {