diff options
author | Brad Fitzpatrick <bradfitz@golang.org> | 2018-01-05 21:35:51 +0000 |
---|---|---|
committer | Brad Fitzpatrick <bradfitz@golang.org> | 2018-01-06 01:14:49 +0000 |
commit | 24df1d06bc1544f096c484b30d50914f9d1d7c81 (patch) | |
tree | 443799feecfe29ae75228d462ac6c4479f411094 /src/net/http/httputil/reverseproxy.go | |
parent | 91f99852f638c249007a5a80277f75aa7cc9e0e8 (diff) | |
download | go-24df1d06bc1544f096c484b30d50914f9d1d7c81.tar.gz go-24df1d06bc1544f096c484b30d50914f9d1d7c81.zip |
Revert "net/http/httputil: allow ReverseProxy to call ModifyResponse on failed requests"
This reverts commit https://golang.org/cl/54030
Reason for revert: to not paint ourselves into a corner.
See https://github.com/golang/go/issues/23009
Fixes #23009
Updates #21255
Change-Id: I68caab078839b9d2bf645a7bbed8405a5a30cd22
Reviewed-on: https://go-review.googlesource.com/86435
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Diffstat (limited to 'src/net/http/httputil/reverseproxy.go')
-rw-r--r-- | src/net/http/httputil/reverseproxy.go | 21 |
1 files changed, 8 insertions, 13 deletions
diff --git a/src/net/http/httputil/reverseproxy.go b/src/net/http/httputil/reverseproxy.go index aa22d5a2fd..b96bb21019 100644 --- a/src/net/http/httputil/reverseproxy.go +++ b/src/net/http/httputil/reverseproxy.go @@ -191,11 +191,10 @@ func (p *ReverseProxy) ServeHTTP(rw http.ResponseWriter, req *http.Request) { } res, err := transport.RoundTrip(outreq) - if res == nil { - res = &http.Response{ - StatusCode: http.StatusBadGateway, - Body: http.NoBody, - } + if err != nil { + p.logf("http: proxy error: %v", err) + rw.WriteHeader(http.StatusBadGateway) + return } removeConnectionHeaders(res.Header) @@ -205,16 +204,12 @@ func (p *ReverseProxy) ServeHTTP(rw http.ResponseWriter, req *http.Request) { } if p.ModifyResponse != nil { - if err != nil { + if err := p.ModifyResponse(res); err != nil { p.logf("http: proxy error: %v", err) + rw.WriteHeader(http.StatusBadGateway) + res.Body.Close() + return } - err = p.ModifyResponse(res) - } - if err != nil { - p.logf("http: proxy error: %v", err) - rw.WriteHeader(http.StatusBadGateway) - res.Body.Close() - return } copyHeader(rw.Header(), res.Header) |