mirror of
https://github.com/distribution/distribution.git
synced 2025-04-27 19:15:28 +00:00
fix: leak
resolves #4494 replaces #4567 Signed-off-by: Vadim Bauer <vb@container-registry.com>
This commit is contained in:
parent
c3a9722979
commit
19934b8fd3
@ -165,7 +165,7 @@ func (hrs *HTTPReadSeeker) reset() {
|
||||
}
|
||||
}
|
||||
|
||||
func (hrs *HTTPReadSeeker) reader() (io.Reader, error) {
|
||||
func (hrs *HTTPReadSeeker) reader() (_ io.Reader, retErr error) {
|
||||
if hrs.err != nil {
|
||||
return nil, hrs.err
|
||||
}
|
||||
@ -191,6 +191,11 @@ func (hrs *HTTPReadSeeker) reader() (io.Reader, error) {
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer func() {
|
||||
if retErr != nil {
|
||||
_ = resp.Body.Close()
|
||||
}
|
||||
}()
|
||||
|
||||
// Normally would use client.SuccessStatus, but that would be a cyclic
|
||||
// import
|
||||
@ -276,8 +281,11 @@ func (hrs *HTTPReadSeeker) reader() (io.Reader, error) {
|
||||
|
||||
hrs.rc = body
|
||||
} else {
|
||||
defer resp.Body.Close()
|
||||
if hrs.errorHandler != nil {
|
||||
// Closing the body should be handled by the existing defer,
|
||||
// but in case a custom "errHandler" is used that doesn't return
|
||||
// an error, we close the body regardless.
|
||||
defer resp.Body.Close()
|
||||
return nil, hrs.errorHandler(resp)
|
||||
}
|
||||
return nil, fmt.Errorf("unexpected status resolving reader: %v", resp.Status)
|
||||
|
Loading…
Reference in New Issue
Block a user