From 5f7da9107f621c6130caa7502efb70dc72ab7e26 Mon Sep 17 00:00:00 2001 From: Michael Fraenkel Date: Thu, 24 Jul 2014 22:14:02 -0700 Subject: [PATCH] Close the response body --- cf/api/buildpack_bits.go | 16 +++++++++------- cf/api/curl.go | 10 ++++++---- cf/net/gateway.go | 2 ++ 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/cf/api/buildpack_bits.go b/cf/api/buildpack_bits.go index 21f242fc8fc..1cc359b4d71 100644 --- a/cf/api/buildpack_bits.go +++ b/cf/api/buildpack_bits.go @@ -5,13 +5,6 @@ import ( "crypto/tls" "crypto/x509" "fmt" - "github.com/cloudfoundry/cli/cf/app_files" - "github.com/cloudfoundry/cli/cf/configuration" - "github.com/cloudfoundry/cli/cf/errors" - . "github.com/cloudfoundry/cli/cf/i18n" - "github.com/cloudfoundry/cli/cf/models" - "github.com/cloudfoundry/cli/cf/net" - "github.com/cloudfoundry/gofileutils/fileutils" "io" "mime/multipart" "net/http" @@ -19,6 +12,14 @@ import ( "path" "path/filepath" "strings" + + "github.com/cloudfoundry/cli/cf/app_files" + "github.com/cloudfoundry/cli/cf/configuration" + "github.com/cloudfoundry/cli/cf/errors" + . "github.com/cloudfoundry/cli/cf/i18n" + "github.com/cloudfoundry/cli/cf/models" + "github.com/cloudfoundry/cli/cf/net" + "github.com/cloudfoundry/gofileutils/fileutils" ) type BuildpackBitsRepository interface { @@ -199,6 +200,7 @@ func (repo CloudControllerBuildpackBitsRepository) downloadBuildpack(url string, cb(nil, err) return } + defer response.Body.Close() io.Copy(tempfile, response.Body) tempfile.Seek(0, 0) diff --git a/cf/api/curl.go b/cf/api/curl.go index 78b6f9d306d..e6bc3e77774 100644 --- a/cf/api/curl.go +++ b/cf/api/curl.go @@ -3,15 +3,16 @@ package api import ( "bufio" "fmt" - "github.com/cloudfoundry/cli/cf/configuration" - "github.com/cloudfoundry/cli/cf/errors" - . "github.com/cloudfoundry/cli/cf/i18n" - "github.com/cloudfoundry/cli/cf/net" "io/ioutil" "net/http" "net/http/httputil" "net/textproto" "strings" + + "github.com/cloudfoundry/cli/cf/configuration" + "github.com/cloudfoundry/cli/cf/errors" + . "github.com/cloudfoundry/cli/cf/i18n" + "github.com/cloudfoundry/cli/cf/net" ) type CurlRepository interface { @@ -52,6 +53,7 @@ func (repo CloudControllerCurlRepository) Request(method, path, headerString, bo if err != nil { return } + defer res.Body.Close() headerBytes, _ := httputil.DumpResponse(res, false) resHeaders = string(headerBytes) diff --git a/cf/net/gateway.go b/cf/net/gateway.go index b77941abe85..6cd175c4907 100644 --- a/cf/net/gateway.go +++ b/cf/net/gateway.go @@ -227,6 +227,7 @@ func (gateway Gateway) performRequestForResponseBytes(request *Request) (bytes [ if apiErr != nil { return } + defer rawResponse.Body.Close() bytes, err := ioutil.ReadAll(rawResponse.Body) if err != nil { @@ -269,6 +270,7 @@ func (gateway Gateway) PerformPollingRequestForJSONResponse(request *Request, re if apiErr != nil { return } + defer rawResponse.Body.Close() if rawResponse.StatusCode > 203 || strings.TrimSpace(string(bytes)) == "" { return