forked from TrueCloudLab/distribution
Merge pull request #7862 from Gandi/bugfixes/segfault-registry-session
Fix SEGFAULT if dns resolv error
This commit is contained in:
commit
8440052689
1 changed files with 13 additions and 7 deletions
|
@ -153,10 +153,11 @@ func (r *Session) GetRemoteImageJSON(imgID, registry string, token []string) ([]
|
|||
|
||||
func (r *Session) GetRemoteImageLayer(imgID, registry string, token []string, imgSize int64) (io.ReadCloser, error) {
|
||||
var (
|
||||
retries = 5
|
||||
client *http.Client
|
||||
res *http.Response
|
||||
imageURL = fmt.Sprintf("%simages/%s/layer", registry, imgID)
|
||||
retries = 5
|
||||
statusCode = 0
|
||||
client *http.Client
|
||||
res *http.Response
|
||||
imageURL = fmt.Sprintf("%simages/%s/layer", registry, imgID)
|
||||
)
|
||||
|
||||
req, err := r.reqFactory.NewRequest("GET", imageURL, nil)
|
||||
|
@ -165,14 +166,19 @@ func (r *Session) GetRemoteImageLayer(imgID, registry string, token []string, im
|
|||
}
|
||||
setTokenAuth(req, token)
|
||||
for i := 1; i <= retries; i++ {
|
||||
statusCode = 0
|
||||
res, client, err = r.doRequest(req)
|
||||
if err != nil {
|
||||
if res.Body != nil {
|
||||
res.Body.Close()
|
||||
log.Debugf("Error contacting registry: %s", err)
|
||||
if res != nil {
|
||||
if res.Body != nil {
|
||||
res.Body.Close()
|
||||
}
|
||||
statusCode = res.StatusCode
|
||||
}
|
||||
if i == retries {
|
||||
return nil, fmt.Errorf("Server error: Status %d while fetching image layer (%s)",
|
||||
res.StatusCode, imgID)
|
||||
statusCode, imgID)
|
||||
}
|
||||
time.Sleep(time.Duration(i) * 5 * time.Second)
|
||||
continue
|
||||
|
|
Loading…
Reference in a new issue