mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00
CurlDownloadStrategy#_fetch: do not alter variable @url
(#504)
In case of download failure and retry, altering `@url` can cause side effect like repeatedly applying `HOMEBREW_ARTIFACT_DOMAIN`.
This commit is contained in:
parent
12c505c093
commit
ed9bb449d1
@ -330,23 +330,25 @@ class CurlDownloadStrategy < AbstractFileDownloadStrategy
|
|||||||
|
|
||||||
# Private method, can be overridden if needed.
|
# Private method, can be overridden if needed.
|
||||||
def _fetch
|
def _fetch
|
||||||
|
url = @url
|
||||||
|
|
||||||
if ENV["HOMEBREW_ARTIFACT_DOMAIN"]
|
if ENV["HOMEBREW_ARTIFACT_DOMAIN"]
|
||||||
@url.sub!(%r{^((ht|f)tps?://)?}, ENV["HOMEBREW_ARTIFACT_DOMAIN"].chomp("/") + "/")
|
url.sub!(%r{^((ht|f)tps?://)?}, ENV["HOMEBREW_ARTIFACT_DOMAIN"].chomp("/") + "/")
|
||||||
ohai "Downloading from #{@url}"
|
ohai "Downloading from #{url}"
|
||||||
end
|
end
|
||||||
|
|
||||||
urls = actual_urls
|
urls = actual_urls(url)
|
||||||
unless urls.empty?
|
unless urls.empty?
|
||||||
ohai "Downloading from #{urls.last}"
|
ohai "Downloading from #{urls.last}"
|
||||||
if !ENV["HOMEBREW_NO_INSECURE_REDIRECT"].nil? && @url.start_with?("https://") &&
|
if !ENV["HOMEBREW_NO_INSECURE_REDIRECT"].nil? && url.start_with?("https://") &&
|
||||||
urls.any? { |u| !u.start_with? "https://" }
|
urls.any? { |u| !u.start_with? "https://" }
|
||||||
puts "HTTPS to HTTP redirect detected & HOMEBREW_NO_INSECURE_REDIRECT is set."
|
puts "HTTPS to HTTP redirect detected & HOMEBREW_NO_INSECURE_REDIRECT is set."
|
||||||
raise CurlDownloadStrategyError.new(@url)
|
raise CurlDownloadStrategyError.new(url)
|
||||||
end
|
end
|
||||||
@url = urls.last
|
url = urls.last
|
||||||
end
|
end
|
||||||
|
|
||||||
curl @url, "-C", downloaded_size, "-o", temporary_path
|
curl url, "-C", downloaded_size, "-o", temporary_path
|
||||||
end
|
end
|
||||||
|
|
||||||
# Curl options to be always passed to curl,
|
# Curl options to be always passed to curl,
|
||||||
@ -357,11 +359,11 @@ class CurlDownloadStrategy < AbstractFileDownloadStrategy
|
|||||||
copts
|
copts
|
||||||
end
|
end
|
||||||
|
|
||||||
def actual_urls
|
def actual_urls(url)
|
||||||
urls = []
|
urls = []
|
||||||
curl_args = _curl_opts << "-I" << "-L" << @url
|
curl_args = _curl_opts << "-I" << "-L" << url
|
||||||
Utils.popen_read("curl", *curl_args).scan(/^Location: (.+)$/).map do |m|
|
Utils.popen_read("curl", *curl_args).scan(/^Location: (.+)$/).map do |m|
|
||||||
urls << URI.join(urls.last || @url, m.first.chomp).to_s
|
urls << URI.join(urls.last || url, m.first.chomp).to_s
|
||||||
end
|
end
|
||||||
urls
|
urls
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user