Browse Source

Prevent loop with var overshadowing

Incase of a 3xx redirect the var was being overshowed and ever changed
causing an infinite loop.

Fixes #9480

Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
Michael Crosby 10 years ago
parent
commit
3b4de1070f
1 changed files with 3 additions and 2 deletions
  1. 3 2
      registry/session.go

+ 3 - 2
registry/session.go

@@ -505,7 +505,7 @@ func (r *Session) PushImageJSONIndex(remote string, imgList []*ImgData, validate
 	// Redirect if necessary
 	// Redirect if necessary
 	for res.StatusCode >= 300 && res.StatusCode < 400 {
 	for res.StatusCode >= 300 && res.StatusCode < 400 {
 		log.Debugf("Redirected to %s", res.Header.Get("Location"))
 		log.Debugf("Redirected to %s", res.Header.Get("Location"))
-		req, err = r.reqFactory.NewRequest("PUT", res.Header.Get("Location"), bytes.NewReader(imgListJSON))
+		req, err := r.reqFactory.NewRequest("PUT", res.Header.Get("Location"), bytes.NewReader(imgListJSON))
 		if err != nil {
 		if err != nil {
 			return nil, err
 			return nil, err
 		}
 		}
@@ -515,10 +515,11 @@ func (r *Session) PushImageJSONIndex(remote string, imgList []*ImgData, validate
 		if validate {
 		if validate {
 			req.Header["X-Docker-Endpoints"] = regs
 			req.Header["X-Docker-Endpoints"] = regs
 		}
 		}
-		res, _, err := r.doRequest(req)
+		redirect, _, err := r.doRequest(req)
 		if err != nil {
 		if err != nil {
 			return nil, err
 			return nil, err
 		}
 		}
+		res = redirect
 		defer res.Body.Close()
 		defer res.Body.Close()
 	}
 	}