diff --git a/client/image_pull.go b/client/image_pull.go index ffe27a365e..cfdae6bec6 100644 --- a/client/image_pull.go +++ b/client/image_pull.go @@ -16,15 +16,18 @@ import ( ) func newImagePullResponse(rc io.ReadCloser) ImagePullResponse { + if rc == nil { + panic("nil io.ReadCloser") + } return ImagePullResponse{ rc: rc, - close: &sync.Once{}, + close: sync.OnceValue(rc.Close), } } type ImagePullResponse struct { rc io.ReadCloser - close *sync.Once + close func() error } // Read implements io.ReadCloser @@ -37,13 +40,7 @@ func (r ImagePullResponse) Close() error { if r.close == nil { return nil } - var err error - r.close.Do(func() { - if r.rc != nil { - err = r.rc.Close() - } - }) - return err + return r.close() } // JSONMessages decodes the response stream as a sequence of JSONMessages. diff --git a/vendor/github.com/moby/moby/client/image_pull.go b/vendor/github.com/moby/moby/client/image_pull.go index ffe27a365e..cfdae6bec6 100644 --- a/vendor/github.com/moby/moby/client/image_pull.go +++ b/vendor/github.com/moby/moby/client/image_pull.go @@ -16,15 +16,18 @@ import ( ) func newImagePullResponse(rc io.ReadCloser) ImagePullResponse { + if rc == nil { + panic("nil io.ReadCloser") + } return ImagePullResponse{ rc: rc, - close: &sync.Once{}, + close: sync.OnceValue(rc.Close), } } type ImagePullResponse struct { rc io.ReadCloser - close *sync.Once + close func() error } // Read implements io.ReadCloser @@ -37,13 +40,7 @@ func (r ImagePullResponse) Close() error { if r.close == nil { return nil } - var err error - r.close.Do(func() { - if r.rc != nil { - err = r.rc.Close() - } - }) - return err + return r.close() } // JSONMessages decodes the response stream as a sequence of JSONMessages.