|
|
@@ -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;
|