aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
authorAdam Vandenberg2013-05-12 13:42:37 -0700
committerAdam Vandenberg2013-05-13 07:32:03 -0700
commita12bfd531b526e192e9bd44bc7cf840c2b85bd34 (patch)
treeebb4b3ae80ce465a684516b51796bd671d7758a7 /Library
parent097fd8f48fce6ced58797a4477207b2de2b40fe0 (diff)
downloadhomebrew-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.rb12
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