Browse Source

api/client: close the returned io.ReadCloser

Signed-off-by: Ma Shimiao <mashimiao.fnst@cn.fujitsu.com>
Ma Shimiao 10 years ago
parent
commit
91a496055c

+ 2 - 0
api/client/attach.go

@@ -31,6 +31,8 @@ func (cli *DockerCli) CmdAttach(args ...string) error {
 		return err
 		return err
 	}
 	}
 
 
+	defer stream.Close()
+
 	var c types.ContainerJSON
 	var c types.ContainerJSON
 	if err := json.NewDecoder(stream).Decode(&c); err != nil {
 	if err := json.NewDecoder(stream).Decode(&c); err != nil {
 		return err
 		return err

+ 2 - 0
api/client/commit.go

@@ -71,6 +71,8 @@ func (cli *DockerCli) CmdCommit(args ...string) error {
 		return err
 		return err
 	}
 	}
 
 
+	defer stream.Close()
+
 	if err := json.NewDecoder(stream).Decode(&response); err != nil {
 	if err := json.NewDecoder(stream).Decode(&response); err != nil {
 		return err
 		return err
 	}
 	}

+ 2 - 0
api/client/create.go

@@ -116,6 +116,8 @@ func (cli *DockerCli) createContainer(config *runconfig.Config, hostConfig *runc
 		return nil, err
 		return nil, err
 	}
 	}
 
 
+	defer stream.Close()
+
 	var response types.ContainerCreateResponse
 	var response types.ContainerCreateResponse
 	if err := json.NewDecoder(stream).Decode(&response); err != nil {
 	if err := json.NewDecoder(stream).Decode(&response); err != nil {
 		return nil, err
 		return nil, err

+ 2 - 0
api/client/diff.go

@@ -30,6 +30,8 @@ func (cli *DockerCli) CmdDiff(args ...string) error {
 		return err
 		return err
 	}
 	}
 
 
+	defer rdr.Close()
+
 	changes := []types.ContainerChange{}
 	changes := []types.ContainerChange{}
 	if err := json.NewDecoder(rdr).Decode(&changes); err != nil {
 	if err := json.NewDecoder(rdr).Decode(&changes); err != nil {
 		return err
 		return err

+ 2 - 0
api/client/exec.go

@@ -28,6 +28,8 @@ func (cli *DockerCli) CmdExec(args ...string) error {
 		return err
 		return err
 	}
 	}
 
 
+	defer stream.Close()
+
 	var response types.ContainerExecCreateResponse
 	var response types.ContainerExecCreateResponse
 	if err := json.NewDecoder(stream).Decode(&response); err != nil {
 	if err := json.NewDecoder(stream).Decode(&response); err != nil {
 		return err
 		return err

+ 2 - 0
api/client/history.go

@@ -29,6 +29,8 @@ func (cli *DockerCli) CmdHistory(args ...string) error {
 		return err
 		return err
 	}
 	}
 
 
+	defer rdr.Close()
+
 	history := []types.ImageHistory{}
 	history := []types.ImageHistory{}
 	if err := json.NewDecoder(rdr).Decode(&history); err != nil {
 	if err := json.NewDecoder(rdr).Decode(&history); err != nil {
 		return err
 		return err

+ 2 - 0
api/client/images.go

@@ -66,6 +66,8 @@ func (cli *DockerCli) CmdImages(args ...string) error {
 		return err
 		return err
 	}
 	}
 
 
+	defer rdr.Close()
+
 	images := []types.Image{}
 	images := []types.Image{}
 	if err := json.NewDecoder(rdr).Decode(&images); err != nil {
 	if err := json.NewDecoder(rdr).Decode(&images); err != nil {
 		return err
 		return err

+ 2 - 0
api/client/info.go

@@ -23,6 +23,8 @@ func (cli *DockerCli) CmdInfo(args ...string) error {
 		return err
 		return err
 	}
 	}
 
 
+	defer rdr.Close()
+
 	info := &types.Info{}
 	info := &types.Info{}
 	if err := json.NewDecoder(rdr).Decode(info); err != nil {
 	if err := json.NewDecoder(rdr).Decode(info); err != nil {
 		return fmt.Errorf("Error reading remote info: %v", err)
 		return fmt.Errorf("Error reading remote info: %v", err)

+ 2 - 0
api/client/login.go

@@ -125,6 +125,8 @@ func (cli *DockerCli) CmdLogin(args ...string) error {
 		return err
 		return err
 	}
 	}
 
 
+	defer stream.Close()
+
 	var response types.AuthResponse
 	var response types.AuthResponse
 	if err := json.NewDecoder(stream).Decode(&response); err != nil {
 	if err := json.NewDecoder(stream).Decode(&response); err != nil {
 		// Upon error, remove entry
 		// Upon error, remove entry

+ 2 - 0
api/client/port.go

@@ -23,6 +23,8 @@ func (cli *DockerCli) CmdPort(args ...string) error {
 		return err
 		return err
 	}
 	}
 
 
+	defer stream.Close()
+
 	var c struct {
 	var c struct {
 		NetworkSettings struct {
 		NetworkSettings struct {
 			Ports nat.PortMap
 			Ports nat.PortMap

+ 2 - 0
api/client/ps.go

@@ -91,6 +91,8 @@ func (cli *DockerCli) CmdPs(args ...string) error {
 		return err
 		return err
 	}
 	}
 
 
+	defer rdr.Close()
+
 	containers := []types.Container{}
 	containers := []types.Container{}
 	if err := json.NewDecoder(rdr).Decode(&containers); err != nil {
 	if err := json.NewDecoder(rdr).Decode(&containers); err != nil {
 		return err
 		return err

+ 2 - 0
api/client/rmi.go

@@ -36,6 +36,8 @@ func (cli *DockerCli) CmdRmi(args ...string) error {
 			fmt.Fprintf(cli.err, "%s\n", err)
 			fmt.Fprintf(cli.err, "%s\n", err)
 			errNames = append(errNames, name)
 			errNames = append(errNames, name)
 		} else {
 		} else {
+			defer rdr.Close()
+
 			dels := []types.ImageDelete{}
 			dels := []types.ImageDelete{}
 			if err := json.NewDecoder(rdr).Decode(&dels); err != nil {
 			if err := json.NewDecoder(rdr).Decode(&dels); err != nil {
 				fmt.Fprintf(cli.err, "%s\n", err)
 				fmt.Fprintf(cli.err, "%s\n", err)

+ 2 - 0
api/client/search.go

@@ -50,6 +50,8 @@ func (cli *DockerCli) CmdSearch(args ...string) error {
 		return err
 		return err
 	}
 	}
 
 
+	defer rdr.Close()
+
 	results := ByStars{}
 	results := ByStars{}
 	if err := json.NewDecoder(rdr).Decode(&results); err != nil {
 	if err := json.NewDecoder(rdr).Decode(&results); err != nil {
 		return err
 		return err

+ 2 - 0
api/client/start.go

@@ -66,6 +66,8 @@ func (cli *DockerCli) CmdStart(args ...string) error {
 			return err
 			return err
 		}
 		}
 
 
+		defer stream.Close()
+
 		var c types.ContainerJSON
 		var c types.ContainerJSON
 		if err := json.NewDecoder(stream).Decode(&c); err != nil {
 		if err := json.NewDecoder(stream).Decode(&c); err != nil {
 			return err
 			return err

+ 2 - 0
api/client/stats.go

@@ -42,7 +42,9 @@ func (s *containerStats) Collect(cli *DockerCli, streamStats bool) {
 		s.mu.Unlock()
 		s.mu.Unlock()
 		return
 		return
 	}
 	}
+
 	defer stream.Close()
 	defer stream.Close()
+
 	var (
 	var (
 		previousCPU    uint64
 		previousCPU    uint64
 		previousSystem uint64
 		previousSystem uint64

+ 2 - 0
api/client/top.go

@@ -30,6 +30,8 @@ func (cli *DockerCli) CmdTop(args ...string) error {
 		return err
 		return err
 	}
 	}
 
 
+	defer stream.Close()
+
 	procList := types.ContainerProcessList{}
 	procList := types.ContainerProcessList{}
 	if err := json.NewDecoder(stream).Decode(&procList); err != nil {
 	if err := json.NewDecoder(stream).Decode(&procList); err != nil {
 		return err
 		return err

+ 6 - 0
api/client/utils.go

@@ -250,6 +250,8 @@ func waitForExit(cli *DockerCli, containerID string) (int, error) {
 		return -1, err
 		return -1, err
 	}
 	}
 
 
+	defer stream.Close()
+
 	var res types.ContainerWaitResponse
 	var res types.ContainerWaitResponse
 	if err := json.NewDecoder(stream).Decode(&res); err != nil {
 	if err := json.NewDecoder(stream).Decode(&res); err != nil {
 		return -1, err
 		return -1, err
@@ -270,6 +272,8 @@ func getExitCode(cli *DockerCli, containerID string) (bool, int, error) {
 		return false, -1, nil
 		return false, -1, nil
 	}
 	}
 
 
+	defer stream.Close()
+
 	var c types.ContainerJSON
 	var c types.ContainerJSON
 	if err := json.NewDecoder(stream).Decode(&c); err != nil {
 	if err := json.NewDecoder(stream).Decode(&c); err != nil {
 		return false, -1, err
 		return false, -1, err
@@ -290,6 +294,8 @@ func getExecExitCode(cli *DockerCli, execID string) (bool, int, error) {
 		return false, -1, nil
 		return false, -1, nil
 	}
 	}
 
 
+	defer stream.Close()
+
 	//TODO: Should we reconsider having a type in api/types?
 	//TODO: Should we reconsider having a type in api/types?
 	//this is a response to exex/id/json not container
 	//this is a response to exex/id/json not container
 	var c struct {
 	var c struct {

+ 2 - 0
api/client/version.go

@@ -45,6 +45,8 @@ func (cli *DockerCli) CmdVersion(args ...string) error {
 		return err
 		return err
 	}
 	}
 
 
+	defer stream.Close()
+
 	var v types.Version
 	var v types.Version
 	if err := json.NewDecoder(stream).Decode(&v); err != nil {
 	if err := json.NewDecoder(stream).Decode(&v); err != nil {
 		fmt.Fprintf(cli.err, "Error reading remote version: %s\n", err)
 		fmt.Fprintf(cli.err, "Error reading remote version: %s\n", err)