Browse code

Ensure that progress reader is closed after usage

Signed-off-by: Stephen J Day <stephen.day@docker.com>

Stephen J Day authored on 2015/01/22 07:16:39
Showing 1 changed files
... ...
@@ -236,7 +236,10 @@ func (s *TagStore) pushImage(r *registry.Session, out io.Writer, imgID, ep strin
236 236
 	// Send the layer
237 237
 	log.Debugf("rendered layer for %s of [%d] size", imgData.ID, layerData.Size)
238 238
 
239
-	checksum, checksumPayload, err := r.PushImageLayerRegistry(imgData.ID, utils.ProgressReader(layerData, int(layerData.Size), out, sf, false, utils.TruncateID(imgData.ID), "Pushing"), ep, token, jsonRaw)
239
+	prgRd := utils.ProgressReader(layerData, int(layerData.Size), out, sf, false, utils.TruncateID(imgData.ID), "Pushing")
240
+	defer prgRd.Close()
241
+
242
+	checksum, checksumPayload, err := r.PushImageLayerRegistry(imgData.ID, prgRd, ep, token, jsonRaw)
240 243
 	if err != nil {
241 244
 		return "", err
242 245
 	}
... ...
@@ -338,8 +341,12 @@ func (s *TagStore) pushV2Repository(r *registry.Session, eng *engine.Engine, out
338 338
 			out.Write(sf.FormatProgress(utils.TruncateID(img.ID), "Image push failed", nil))
339 339
 			return err
340 340
 		}
341
+
341 342
 		if !exists {
342
-			err = r.PutV2ImageBlob(endpoint, repoInfo.RemoteName, sumParts[0], manifestSum, utils.ProgressReader(arch, int(img.Size), out, sf, false, utils.TruncateID(img.ID), "Pushing"), auth)
343
+			prgRd := utils.ProgressReader(arch, int(img.Size), out, sf, false, utils.TruncateID(img.ID), "Pushing")
344
+			defer prgRd.Close()
345
+
346
+			err = r.PutV2ImageBlob(endpoint, repoInfo.RemoteName, sumParts[0], manifestSum, prgRd, auth)
343 347
 			if err != nil {
344 348
 				out.Write(sf.FormatProgress(utils.TruncateID(img.ID), "Image push failed", nil))
345 349
 				return err