mirror of
https://github.com/distribution/distribution.git
synced 2025-04-28 03:21:02 +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 {
|
if hrs.err != nil {
|
||||||
return nil, hrs.err
|
return nil, hrs.err
|
||||||
}
|
}
|
||||||
@ -191,6 +191,11 @@ func (hrs *HTTPReadSeeker) reader() (io.Reader, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
defer func() {
|
||||||
|
if retErr != nil {
|
||||||
|
_ = resp.Body.Close()
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
// Normally would use client.SuccessStatus, but that would be a cyclic
|
// Normally would use client.SuccessStatus, but that would be a cyclic
|
||||||
// import
|
// import
|
||||||
@ -276,8 +281,11 @@ func (hrs *HTTPReadSeeker) reader() (io.Reader, error) {
|
|||||||
|
|
||||||
hrs.rc = body
|
hrs.rc = body
|
||||||
} else {
|
} else {
|
||||||
defer resp.Body.Close()
|
|
||||||
if hrs.errorHandler != nil {
|
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, hrs.errorHandler(resp)
|
||||||
}
|
}
|
||||||
return nil, fmt.Errorf("unexpected status resolving reader: %v", resp.Status)
|
return nil, fmt.Errorf("unexpected status resolving reader: %v", resp.Status)
|
||||||
|
Loading…
Reference in New Issue
Block a user