X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=cgi%2Fbugreport.cgi;h=3dddc5e8030bd7ce752c0c669498bd60bbc04efb;hb=62cac6b6d596b6f29286adf2e6781405f9fd04e9;hp=86152f978dc0252b6e36b862f0845246a030c37c;hpb=61c42ddd4e22c83885a2d721b5a98d8ae9a82fbd;p=debbugs.git diff --git a/cgi/bugreport.cgi b/cgi/bugreport.cgi index 86152f9..3dddc5e 100755 --- a/cgi/bugreport.cgi +++ b/cgi/bugreport.cgi @@ -15,11 +15,11 @@ use MIME::Decoder; use IO::Scalar; use IO::File; -use Debbugs::Config qw(:globals :text); +use Debbugs::Config qw(:globals :text :config); # for read_log_records use Debbugs::Log qw(:read); -use Debbugs::CGI qw(:url :html :util); +use Debbugs::CGI qw(:url :html :util :cache); use Debbugs::CGI::Bugreport qw(:all); use Debbugs::Common qw(buglog getmaintainers make_list bug_status); use Debbugs::Packages qw(getpkgsrc); @@ -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}; @@ -129,12 +129,12 @@ if (not (($mbox and not $mbox_status_message) or ## Identify the users required for my $user (map {split /[\s*,\s*]+/} make_list($param{users}||[])) { next unless length($user); - push @dependent_files,Debbugs::User::usertag_flie_from_email($user); + push @dependent_files,Debbugs::User::usertag_file_from_email($user); } if (defined $param{usertag}) { for my $usertag (make_list($param{usertag})) { my ($user, $tag) = split /:/, $usertag, 2; - push @dependent_files,Debbugs::User::usertag_flie_from_email($user); + push @dependent_files,Debbugs::User::usertag_file_from_email($user); } } $etag = @@ -146,7 +146,12 @@ $etag = ], ); if (not $etag) { - print $q->header(-status => 304); + print $q->header(-status => 304, + -cache_control => 'public, max-age=600', + -etag => $etag, + -charset => 'utf-8', + -content_type => 'text/html', + ); print "304: Not modified\n"; exit 0; } @@ -156,6 +161,7 @@ if ($q->request_method() eq 'HEAD' and not defined($att) and not $mbox) { print $q->header(-status => 200, -cache_control => 'public, max-age=600', -etag => $etag, + -charset => 'utf-8', -content_type => 'text/html', ); exit 0; @@ -220,11 +226,10 @@ if ( $mbox ) { binmode(STDOUT,":raw"); my $date = strftime "%a %b %d %T %Y", localtime; if (@records > 1) { - print $q->header(-type => "text/plain", + print $q->header(-type => "application/mbox", -cache_control => 'public, max-age=600', -etag => $etag, content_disposition => qq(attachment; filename="bug_${ref}.mbox"), - (length $mtime)?(-last_modified => $mtime):(), ); } else { @@ -233,7 +238,6 @@ if ( $mbox ) { -cache_control => 'public, max-age=86400', -etag => $etag, content_disposition => qq(attachment; filename="bug_${ref}_message_${msg_num}.mbox"), - (length $mtime)?(-last_modified => $mtime):(), ); } if ($mbox_status_message and @records > 1) { @@ -310,7 +314,7 @@ else { $msg_num++; ## allow this to be cached for a week print "Status: 200 OK\n"; - print "Cache-control: public, max-age=604800\n"; + print "Cache-Control: public, max-age=604800\n"; print "Etag: $etag\n"; print handle_email_message($records[0], ref => $ref,