]> git.donarmstrong.com Git - debbugs.git/commitdiff
quitcgi: Return 400/500 status codes
authorNiels Thykier <niels@thykier.net>
Sun, 21 Aug 2016 10:24:20 +0000 (10:24 +0000)
committerNiels Thykier <niels@thykier.net>
Wed, 7 Sep 2016 18:05:14 +0000 (18:05 +0000)
Signed-off-by: Niels Thykier <niels@thykier.net>
Debbugs/CGI.pm
cgi/bugreport.cgi
cgi/pkgindex.cgi
cgi/pkgreport.cgi
examples/debian/misc/bugspam.cgi

index cd5f6e3f40f4ee5171443e3b803d398d2a331423..393b40602ef12203d1c746ddedcb53c0476f3fb3 100644 (file)
@@ -292,7 +292,9 @@ sub cgi_parameters {
 
 
 sub quitcgi {
-    my $msg = shift;
+    my ($msg, $status) = @_;
+    $status //= '500 Internal Server Error';
+    print "Status: $status\n";
     print "Content-Type: text/html\n\n";
     print fill_in_template(template=>'cgi/quit',
                           variables => {msg => $msg}
index 9b445ce64ae1e562af1a5e426d60ea573ca6487a..7a9498213e0828bad8cdf59ae8ef0380bd346b1e 100755 (executable)
@@ -60,8 +60,8 @@ my %param = cgi_parameters(query => $q,
                          );
 # This is craptacular.
 
-my $ref = $param{bug} or quitcgi("No bug number");
-$ref =~ /(\d+)/ or quitcgi("Invalid bug number");
+my $ref = $param{bug} or quitcgi("No bug number", '400 Bad Request');
+$ref =~ /(\d+)/ or quitcgi("Invalid bug number", '400 Bad Request');
 $ref = $1;
 my $short = "#$ref";
 my ($msg) = $param{msg} =~ /^(\d+)$/ if exists $param{msg};
index 793cda252a25627fd6fa5205c27958dd59e2ac91..a43428a6cd7f6362433a1c3ace25a6b2b04b3b07 100755 (executable)
@@ -43,14 +43,14 @@ elsif (defined $param{prev}) {
 
 my $indexon = $param{indexon};
 if ($param{indexon} !~ m/^(pkg|src|maint|submitter|tag)$/) {
-    quitcgi("You have to choose something to index on");
+    quitcgi("You have to choose something to index on", '400 Bad Request');
 }
 
 my $repeatmerged = $param{repeatmerged} eq 'yes';
 my $archive = $param{archive} eq "yes";
 my $sortby = $param{sortby};
 if ($sortby !~ m/^(alpha|count)$/) {
-    quitcgi("Don't know how to sort like that");
+    quitcgi("Don't know how to sort like that", '400 Bad Request');
 }
 
 my $Archived = $archive ? " Archived" : "";
index 1ea9a17a314160b2c83314677852e8f5f6312235..455df20cea2896c7f2645c601d59a14584ce50a4 100755 (executable)
@@ -275,7 +275,8 @@ if (defined $param{usertag}) {
      }
 }
 
-quitcgi("You have to choose something to select by") unless grep {exists $param{$_}} keys %package_search_keys;
+quitcgi("You have to choose something to select by", '400 Bad Request')
+  unless grep {exists $param{$_}} keys %package_search_keys;
 
 
 my $Archived = $param{archive} ? " Archived" : "";
index 0e9416554fcceea9c766fe3430b600baa3b1f608..46bc17f68e0a5e969162c123bb797dc28270b51a 100755 (executable)
@@ -3,8 +3,10 @@
 use strict;
 use CGI qw(param remote_host);
 
-sub quitcgi($) {
-    my $msg = shift;
+sub quitcgi($;$) {
+    my ($msg, $status) = @_;
+    $status //= '500 Internal Server Error';
+    print "Status: $status\n";
     print "Content-Type: text/html\n\n";
     print "<HTML><HEAD><TITLE>Error</TITLE></HEAD><BODY>\n";
     print "An error occurred. Dammit.\n";
@@ -13,8 +15,8 @@ sub quitcgi($) {
     exit 0;
 }
 
-my $bug = param('bug') or quitcgi('No bug specfied');
-quitcgi('No valid bug number') unless $bug =~ /^\d{3,6}$/;
+my $bug = param('bug') or quitcgi('No bug specfied', '400 Bad Request');
+quitcgi('No valid bug number', '400 Bad Request') unless $bug =~ /^\d{3,6}$/;
 my $remote_host = remote_host or quitcgi("No remote host");
 my $ok = param('ok');
 if (not defined $ok) {