diff options
| author | Adam Vandenberg | 2013-05-12 13:42:37 -0700 |
|---|---|---|
| committer | Adam Vandenberg | 2013-05-13 07:32:03 -0700 |
| commit | a12bfd531b526e192e9bd44bc7cf840c2b85bd34 (patch) | |
| tree | ebb4b3ae80ce465a684516b51796bd671d7758a7 /Library | |
| parent | 097fd8f48fce6ced58797a4477207b2de2b40fe0 (diff) | |
| download | homebrew-a12bfd531b526e192e9bd44bc7cf840c2b85bd34.tar.bz2 | |
Retry downloads if a server doesn't support byte ranges
If an incomplete download exists, and the HTTP server doesn't support
byte ranges, delete the incomplete download and retry once.
Tested with freeling, whose server does not support byte ranges.
Closes #19757.
Diffstat (limited to 'Library')
| -rw-r--r-- | Library/Homebrew/download_strategy.rb | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/Library/Homebrew/download_strategy.rb b/Library/Homebrew/download_strategy.rb index d1564f977..67261af2a 100644 --- a/Library/Homebrew/download_strategy.rb +++ b/Library/Homebrew/download_strategy.rb @@ -69,10 +69,20 @@ class CurlDownloadStrategy < AbstractDownloadStrategy ohai "Downloading #{@url}" unless @tarball_path.exist? + had_incomplete_download = @temporary_path.exist? begin _fetch rescue ErrorDuringExecution - raise CurlDownloadStrategyError, "Download failed: #{@url}" + # 33 == range not supported + # try wiping the incomplete download and retrying once + if $?.exitstatus == 33 && had_incomplete_download + ohai "Trying a full download" + @temporary_path.unlink + had_incomplete_download = false + retry + else + raise CurlDownloadStrategyError, "Download failed: #{@url}" + end end ignore_interrupts { @temporary_path.rename(@tarball_path) } else |
