From a0e7d3fc71b49f9b0bf6e37bf9e9b129b764742e Mon Sep 17 00:00:00 2001 From: Michael Crosby Date: Tue, 11 Feb 2014 06:21:33 -0800 Subject: [PATCH] Ensure docker cp stream is closes properly Docker-DCO-1.1-Signed-off-by: Michael Crosby (github: crosbymichael) Upstream-commit: 35821ad78f4ad2b20cf839ecc5a73b44c568c5eb Component: engine --- components/engine/container.go | 4 ++-- components/engine/server.go | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/components/engine/container.go b/components/engine/container.go index 81e8749d2a..0bfa8befe6 100644 --- a/components/engine/container.go +++ b/components/engine/container.go @@ -1562,7 +1562,7 @@ func (container *Container) GetSize() (int64, int64) { return sizeRw, sizeRootfs } -func (container *Container) Copy(resource string) (archive.Archive, error) { +func (container *Container) Copy(resource string) (io.ReadCloser, error) { if err := container.Mount(); err != nil { return nil, err } @@ -1589,7 +1589,7 @@ func (container *Container) Copy(resource string) (archive.Archive, error) { if err != nil { return nil, err } - return EofReader(archive, func() { container.Unmount() }), nil + return utils.NewReadCloserWrapper(archive, container.Unmount), nil } // Returns true if the container exposes a certain port diff --git a/components/engine/server.go b/components/engine/server.go index f108f61740..20b45f65aa 100644 --- a/components/engine/server.go +++ b/components/engine/server.go @@ -2339,6 +2339,7 @@ func (srv *Server) ContainerCopy(job *engine.Job) engine.Status { if err != nil { return job.Error(err) } + defer data.Close() if _, err := io.Copy(job.Stdout, data); err != nil { return job.Error(err)