diff --git a/http/download.go b/http/download.go index 57a4d189..a6fe46b7 100644 --- a/http/download.go +++ b/http/download.go @@ -179,9 +179,9 @@ func (downloader *downloaderImpl) DownloadWithChecksum(ctx context.Context, url var temppath string maxTries := downloader.maxTries - const delayBase = 1 + const delayMax = time.Duration(5 * time.Minute) + delay := time.Duration(1 * time.Second) const delayMultiplier = 2 - delay := time.Duration(delayBase * time.Second) for maxTries > 0 { temppath, err = downloader.download(req, url, destination, expected, ignoreMismatch) @@ -192,8 +192,11 @@ func (downloader *downloaderImpl) DownloadWithChecksum(ctx context.Context, url } maxTries-- time.Sleep(delay) - // Sleep exponentially at the next retry + // Sleep exponentially at the next retry, but no longer than delayMax delay *= delayMultiplier + if delay > delayMax { + delay = delayMax + } } else { if downloader.progress != nil { downloader.progress.Printf("Error downloading %s: %s cannot retry...\n", url, err)