From 91a496055c3e45ab3fba8e643475adb618581e1f Mon Sep 17 00:00:00 2001 From: Ma Shimiao Date: Fri, 3 Jul 2015 14:19:23 +0800 Subject: [PATCH] api/client: close the returned io.ReadCloser Signed-off-by: Ma Shimiao --- api/client/attach.go | 2 ++ api/client/commit.go | 2 ++ api/client/create.go | 2 ++ api/client/diff.go | 2 ++ api/client/exec.go | 2 ++ api/client/history.go | 2 ++ api/client/images.go | 2 ++ api/client/info.go | 2 ++ api/client/login.go | 2 ++ api/client/port.go | 2 ++ api/client/ps.go | 2 ++ api/client/rmi.go | 2 ++ api/client/search.go | 2 ++ api/client/start.go | 2 ++ api/client/stats.go | 2 ++ api/client/top.go | 2 ++ api/client/utils.go | 6 ++++++ api/client/version.go | 2 ++ 18 files changed, 40 insertions(+) diff --git a/api/client/attach.go b/api/client/attach.go index 06968c96ad..ee53b96508 100644 --- a/api/client/attach.go +++ b/api/client/attach.go @@ -31,6 +31,8 @@ func (cli *DockerCli) CmdAttach(args ...string) error { return err } + defer stream.Close() + var c types.ContainerJSON if err := json.NewDecoder(stream).Decode(&c); err != nil { return err diff --git a/api/client/commit.go b/api/client/commit.go index a0ece80d1b..55ff3d7e53 100644 --- a/api/client/commit.go +++ b/api/client/commit.go @@ -71,6 +71,8 @@ func (cli *DockerCli) CmdCommit(args ...string) error { return err } + defer stream.Close() + if err := json.NewDecoder(stream).Decode(&response); err != nil { return err } diff --git a/api/client/create.go b/api/client/create.go index b97d2c4d57..edd642f82e 100644 --- a/api/client/create.go +++ b/api/client/create.go @@ -116,6 +116,8 @@ func (cli *DockerCli) createContainer(config *runconfig.Config, hostConfig *runc return nil, err } + defer stream.Close() + var response types.ContainerCreateResponse if err := json.NewDecoder(stream).Decode(&response); err != nil { return nil, err diff --git a/api/client/diff.go b/api/client/diff.go index 6a849240a7..91669c2abd 100644 --- a/api/client/diff.go +++ b/api/client/diff.go @@ -30,6 +30,8 @@ func (cli *DockerCli) CmdDiff(args ...string) error { return err } + defer rdr.Close() + changes := []types.ContainerChange{} if err := json.NewDecoder(rdr).Decode(&changes); err != nil { return err diff --git a/api/client/exec.go b/api/client/exec.go index 9eea94c1e4..9b1b59ad8f 100644 --- a/api/client/exec.go +++ b/api/client/exec.go @@ -28,6 +28,8 @@ func (cli *DockerCli) CmdExec(args ...string) error { return err } + defer stream.Close() + var response types.ContainerExecCreateResponse if err := json.NewDecoder(stream).Decode(&response); err != nil { return err diff --git a/api/client/history.go b/api/client/history.go index 44ae095fd2..ece42c07d9 100644 --- a/api/client/history.go +++ b/api/client/history.go @@ -29,6 +29,8 @@ func (cli *DockerCli) CmdHistory(args ...string) error { return err } + defer rdr.Close() + history := []types.ImageHistory{} if err := json.NewDecoder(rdr).Decode(&history); err != nil { return err diff --git a/api/client/images.go b/api/client/images.go index 084d163059..701e19fcbb 100644 --- a/api/client/images.go +++ b/api/client/images.go @@ -66,6 +66,8 @@ func (cli *DockerCli) CmdImages(args ...string) error { return err } + defer rdr.Close() + images := []types.Image{} if err := json.NewDecoder(rdr).Decode(&images); err != nil { return err diff --git a/api/client/info.go b/api/client/info.go index 692bc7482d..4cfa76d5ff 100644 --- a/api/client/info.go +++ b/api/client/info.go @@ -23,6 +23,8 @@ func (cli *DockerCli) CmdInfo(args ...string) error { return err } + defer rdr.Close() + info := &types.Info{} if err := json.NewDecoder(rdr).Decode(info); err != nil { return fmt.Errorf("Error reading remote info: %v", err) diff --git a/api/client/login.go b/api/client/login.go index 87437f79db..c88b6dac30 100644 --- a/api/client/login.go +++ b/api/client/login.go @@ -125,6 +125,8 @@ func (cli *DockerCli) CmdLogin(args ...string) error { return err } + defer stream.Close() + var response types.AuthResponse if err := json.NewDecoder(stream).Decode(&response); err != nil { // Upon error, remove entry diff --git a/api/client/port.go b/api/client/port.go index 2b3052abbd..ec98184c7a 100644 --- a/api/client/port.go +++ b/api/client/port.go @@ -23,6 +23,8 @@ func (cli *DockerCli) CmdPort(args ...string) error { return err } + defer stream.Close() + var c struct { NetworkSettings struct { Ports nat.PortMap diff --git a/api/client/ps.go b/api/client/ps.go index a297f7df70..10ac9db422 100644 --- a/api/client/ps.go +++ b/api/client/ps.go @@ -91,6 +91,8 @@ func (cli *DockerCli) CmdPs(args ...string) error { return err } + defer rdr.Close() + containers := []types.Container{} if err := json.NewDecoder(rdr).Decode(&containers); err != nil { return err diff --git a/api/client/rmi.go b/api/client/rmi.go index 8434a805c3..19f2f61b5d 100644 --- a/api/client/rmi.go +++ b/api/client/rmi.go @@ -36,6 +36,8 @@ func (cli *DockerCli) CmdRmi(args ...string) error { fmt.Fprintf(cli.err, "%s\n", err) errNames = append(errNames, name) } else { + defer rdr.Close() + dels := []types.ImageDelete{} if err := json.NewDecoder(rdr).Decode(&dels); err != nil { fmt.Fprintf(cli.err, "%s\n", err) diff --git a/api/client/search.go b/api/client/search.go index 02c1f7d556..1fdff73f2f 100644 --- a/api/client/search.go +++ b/api/client/search.go @@ -50,6 +50,8 @@ func (cli *DockerCli) CmdSearch(args ...string) error { return err } + defer rdr.Close() + results := ByStars{} if err := json.NewDecoder(rdr).Decode(&results); err != nil { return err diff --git a/api/client/start.go b/api/client/start.go index db806133dd..a04bc564a7 100644 --- a/api/client/start.go +++ b/api/client/start.go @@ -66,6 +66,8 @@ func (cli *DockerCli) CmdStart(args ...string) error { return err } + defer stream.Close() + var c types.ContainerJSON if err := json.NewDecoder(stream).Decode(&c); err != nil { return err diff --git a/api/client/stats.go b/api/client/stats.go index e5d30fe7d4..408d58f9a1 100644 --- a/api/client/stats.go +++ b/api/client/stats.go @@ -42,7 +42,9 @@ func (s *containerStats) Collect(cli *DockerCli, streamStats bool) { s.mu.Unlock() return } + defer stream.Close() + var ( previousCPU uint64 previousSystem uint64 diff --git a/api/client/top.go b/api/client/top.go index fce32fd978..736ba1a970 100644 --- a/api/client/top.go +++ b/api/client/top.go @@ -30,6 +30,8 @@ func (cli *DockerCli) CmdTop(args ...string) error { return err } + defer stream.Close() + procList := types.ContainerProcessList{} if err := json.NewDecoder(stream).Decode(&procList); err != nil { return err diff --git a/api/client/utils.go b/api/client/utils.go index 8397b2cd25..8513fae383 100644 --- a/api/client/utils.go +++ b/api/client/utils.go @@ -250,6 +250,8 @@ func waitForExit(cli *DockerCli, containerID string) (int, error) { return -1, err } + defer stream.Close() + var res types.ContainerWaitResponse if err := json.NewDecoder(stream).Decode(&res); err != nil { return -1, err @@ -270,6 +272,8 @@ func getExitCode(cli *DockerCli, containerID string) (bool, int, error) { return false, -1, nil } + defer stream.Close() + var c types.ContainerJSON if err := json.NewDecoder(stream).Decode(&c); err != nil { return false, -1, err @@ -290,6 +294,8 @@ func getExecExitCode(cli *DockerCli, execID string) (bool, int, error) { return false, -1, nil } + defer stream.Close() + //TODO: Should we reconsider having a type in api/types? //this is a response to exex/id/json not container var c struct { diff --git a/api/client/version.go b/api/client/version.go index 33c54c5ffe..c95608ee15 100644 --- a/api/client/version.go +++ b/api/client/version.go @@ -45,6 +45,8 @@ func (cli *DockerCli) CmdVersion(args ...string) error { return err } + defer stream.Close() + var v types.Version if err := json.NewDecoder(stream).Decode(&v); err != nil { fmt.Fprintf(cli.err, "Error reading remote version: %s\n", err)