Fixes #19976
Change-Id: I48486467066784a9dcc24357ec94a1be85265a6f
Reviewed-on: https://go-review.googlesource.com/40940
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
if len(reqs) > 0 {
loc := resp.Header.Get("Location")
if loc == "" {
+ resp.closeBody()
return nil, uerr(fmt.Errorf("%d response missing Location header", resp.StatusCode))
}
u, err := req.URL.Parse(loc)
if err != nil {
+ resp.closeBody()
return nil, uerr(fmt.Errorf("failed to parse Location header %q: %v", loc, err))
}
ireq := reqs[0]
if includeBody && ireq.GetBody != nil {
req.Body, err = ireq.GetBody()
if err != nil {
+ resp.closeBody()
return nil, uerr(err)
}
req.ContentLength = ireq.ContentLength
// Success
return nil
}
+
+func (r *Response) closeBody() {
+ if r.Body != nil {
+ r.Body.Close()
+ }
+}