diff options
-rw-r--r-- | debian/changelog | 1 | ||||
-rwxr-xr-x | dgit | 9 |
2 files changed, 10 insertions, 0 deletions
diff --git a/debian/changelog b/debian/changelog index 180a3f1..3036438 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,6 @@ dgit (2.6~) unstable; urgency=medium + * Check for non-2xx HTTP status codes from ftpmaster api server. * Always honour --curl= and --curl:. -- @@ -989,7 +989,16 @@ sub api_query ($$) { badcfg "ftpmasterapi archive query method takes no data part" if length $data; my @cmd = archive_api_query_cmd($subpath); + my $url = $cmd[$#cmd]; + push @cmd, qw(-w %{http_code}); my $json = cmdoutput @cmd; + unless ($json =~ s/\d+\d+\d$//) { + failedcmd_report_cmd undef, @cmd; + fail "curl failed to print 3-digit HTTP code"; + } + my $code = $&; + fail "fetch of $url gave HTTP code $code" + unless $url =~ m#^file://# or $code =~ m/^2/; return decode_json($json); } |