summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--debian/changelog1
-rwxr-xr-xdgit9
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:.
--
diff --git a/dgit b/dgit
index 19a0835..ae07145 100755
--- a/dgit
+++ b/dgit
@@ -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);
}