From 258d520cf74347c8d2d8176a5f597ffaf542fbcc Mon Sep 17 00:00:00 2001 From: Florent Biville Date: Mon, 11 Feb 2019 12:23:34 +0100 Subject: [PATCH] Close response body after use when caching downloaded buildpacks Hopefully fixes #97 Signed-off-by: Florent Biville --- builder_factory.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/builder_factory.go b/builder_factory.go index bc8d435b71..dfd82be7c9 100644 --- a/builder_factory.go +++ b/builder_factory.go @@ -153,6 +153,12 @@ func (f *BuilderFactory) resolveBuildpackURI(builderDir string, b Buildpack) (Bu dir = cachedDir break } else { + defer func() { + err := reader.Close() + if err != nil { + fmt.Printf("warning: could not close %v: %s", reader, err) + } + }() if err = f.untarZ(reader, cachedDir); err != nil { return Buildpack{}, err } @@ -324,7 +330,7 @@ func (f *BuilderFactory) latestLayer(buildpacks []Buildpack, dest, builderDir st return tarFile, err } -func (f *BuilderFactory) downloadAsStream(uri string, etag string) (io.Reader, string, error) { +func (f *BuilderFactory) downloadAsStream(uri string, etag string) (io.ReadCloser, string, error) { c := http.Client{} req, err := http.NewRequest("GET", uri, nil) if err != nil {