Commit ad6c02d2 authored by Jacob Vosmaer's avatar Jacob Vosmaer Committed by Nick Thomas

Simplify badgateway RoundTripper

parent f2b5a96b
...@@ -23,9 +23,13 @@ func NewRoundTripper(developmentMode bool, next http.RoundTripper) http.RoundTri ...@@ -23,9 +23,13 @@ func NewRoundTripper(developmentMode bool, next http.RoundTripper) http.RoundTri
return &roundTripper{next: next, developmentMode: developmentMode} return &roundTripper{next: next, developmentMode: developmentMode}
} }
func (t *roundTripper) RoundTrip(r *http.Request) (res *http.Response, err error) { func (t *roundTripper) RoundTrip(r *http.Request) (*http.Response, error) {
start := time.Now() start := time.Now()
res, err = t.next.RoundTrip(r)
res, err := t.next.RoundTrip(r)
if err == nil {
return res, err
}
// httputil.ReverseProxy translates all errors from this // httputil.ReverseProxy translates all errors from this
// RoundTrip function into 500 errors. But the most likely error // RoundTrip function into 500 errors. But the most likely error
...@@ -33,7 +37,6 @@ func (t *roundTripper) RoundTrip(r *http.Request) (res *http.Response, err error ...@@ -33,7 +37,6 @@ func (t *roundTripper) RoundTrip(r *http.Request) (res *http.Response, err error
// and administrators expect to see a 502 error. To show 502s // and administrators expect to see a 502 error. To show 502s
// instead of 500s we catch the RoundTrip error here and inject a // instead of 500s we catch the RoundTrip error here and inject a
// 502 response. // 502 response.
if err != nil {
helper.LogError( helper.LogError(
r, r,
&sentryError{fmt.Errorf("badgateway: failed after %.fs: %v", time.Since(start).Seconds(), err)}, &sentryError{fmt.Errorf("badgateway: failed after %.fs: %v", time.Since(start).Seconds(), err)},
...@@ -44,7 +47,7 @@ func (t *roundTripper) RoundTrip(r *http.Request) (res *http.Response, err error ...@@ -44,7 +47,7 @@ func (t *roundTripper) RoundTrip(r *http.Request) (res *http.Response, err error
message = err.Error() message = err.Error()
} }
res = &http.Response{ injectedResponse := &http.Response{
StatusCode: http.StatusBadGateway, StatusCode: http.StatusBadGateway,
Status: http.StatusText(http.StatusBadGateway), Status: http.StatusText(http.StatusBadGateway),
...@@ -56,8 +59,7 @@ func (t *roundTripper) RoundTrip(r *http.Request) (res *http.Response, err error ...@@ -56,8 +59,7 @@ func (t *roundTripper) RoundTrip(r *http.Request) (res *http.Response, err error
Trailer: make(http.Header), Trailer: make(http.Header),
Body: ioutil.NopCloser(bytes.NewBufferString(message)), Body: ioutil.NopCloser(bytes.NewBufferString(message)),
} }
res.Header.Set("Content-Type", "text/plain") injectedResponse.Header.Set("Content-Type", "text/plain")
err = nil
} return injectedResponse, nil
return
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment