diff --git a/scripts/download.pl b/scripts/download.pl index c6c9b8e56c..09dc91b04b 100755 --- a/scripts/download.pl +++ b/scripts/download.pl @@ -163,6 +163,7 @@ sub download my $mirror = shift; my $download_filename = shift; my @additional_mirrors = @_; + my @cmd; $mirror =~ s!/$!!; @@ -209,7 +210,11 @@ sub download } }; } else { - my @cmd = download_cmd("$mirror/$download_filename", $download_filename, @additional_mirrors); + if ($mirror =~ /a=snapshot/) { + @cmd = download_cmd("$mirror", $download_filename, @additional_mirrors); + } else { + @cmd = download_cmd("$mirror/$download_filename", $download_filename, @additional_mirrors); + } print STDERR "+ ".join(" ",@cmd)."\n"; open(FETCH_FD, '-|', @cmd) or die "Cannot launch aria2c, curl or wget.\n"; $hash_cmd and do { @@ -317,14 +322,23 @@ if (-f "$target/$filename") { $download_tool = select_tool(); +my $mirror = shift @mirrors; + +# Try snapshot original source last +if ($mirror =~ /snapshot/) { + push @mirrors, $mirror; + $mirror = shift @mirrors; +} + while (!-f "$target/$filename") { - my $mirror = shift @mirrors; $mirror or die "No more mirrors to try - giving up.\n"; download($mirror, $url_filename, @mirrors); if (!-f "$target/$filename" && $url_filename ne $filename) { download($mirror, $filename, @mirrors); } + + $mirror = shift @mirrors; } $SIG{INT} = \&cleanup;