diff options
Diffstat (limited to 'Bugzilla')
-rw-r--r-- | Bugzilla/CGI.pm | 23 | ||||
-rw-r--r-- | Bugzilla/Error.pm | 4 | ||||
-rw-r--r-- | Bugzilla/Template.pm | 13 |
3 files changed, 7 insertions, 33 deletions
diff --git a/Bugzilla/CGI.pm b/Bugzilla/CGI.pm index ec8b8e52b..78987ab71 100644 --- a/Bugzilla/CGI.pm +++ b/Bugzilla/CGI.pm @@ -21,7 +21,6 @@ use Bugzilla::Search::Recent; use File::Basename; use URI; -use Carp qw(cluck); BEGIN { if (ON_WINDOWS) { @@ -307,6 +306,7 @@ sub check_etag { return 0; } +# Overwrite to ensure nph doesn't get set, and unset HEADERS_ONCE sub multipart_init { my $self = shift; @@ -330,7 +330,6 @@ sub multipart_init { # CGI.pm's header() sets nph according to a param or $CGI::NPH, which # is the desired behaviour. - $self->{_bz_multipart} = 1; return $self->header( %param, ) . "WARNING: YOUR BROWSER DOESN'T SUPPORT THIS SERVER-PUSH TECHNOLOGY." . $self->multipart_end; @@ -385,12 +384,7 @@ sub header { my %headers; my $user = Bugzilla->user; - if ($self->{_bz_headers_sent} && !$self->{_bz_multipart}) { - # cluck for the warning log so we can see where this was called. - cluck "attempt to send headers after headers already sent!"; - ThrowCodeError("headers_already_sent"); - } - + # If there's only one parameter, then it's a Content-Type. if (scalar(@_) == 1) { %headers = ('-type' => shift(@_)); } @@ -466,18 +460,9 @@ sub header { Bugzilla::Hook::process('cgi_headers', { cgi => $self, headers => \%headers } ); + $self->{_header_done} = 1; - my $headers = $self->SUPER::header(%headers) || ""; - if ($headers && Bugzilla->usage_mode != USAGE_MODE_XMLRPC) { - $self->{_bz_headers_sent} = 1; - } - - return $headers; -} - -sub sent_headers { - my ($self) = @_; - return $self->{_bz_headers_sent}; + return $self->SUPER::header(%headers) || ""; } sub param { diff --git a/Bugzilla/Error.pm b/Bugzilla/Error.pm index 226078f9c..fc0e4812e 100644 --- a/Bugzilla/Error.pm +++ b/Bugzilla/Error.pm @@ -112,7 +112,7 @@ sub _throw_error { } my $cgi = Bugzilla->cgi; - $cgi->close_standby_message('text/html', 'inline', 'error', 'html') unless $cgi->sent_headers; + $cgi->close_standby_message('text/html', 'inline', 'error', 'html'); $template->process($name, $vars) || ThrowTemplateError($template->error()); print $cgi->multipart_final() if $cgi->{_multipart_in_progress}; @@ -279,7 +279,7 @@ sub ThrowErrorPage { my $template = Bugzilla->template; my $vars = {}; $vars->{message} = $message; - print $cgi->header() unless $cgi->sent_headers(); + print $cgi->header(); $template->process($template_name, $vars) || ThrowTemplateError($template->error()); exit; diff --git a/Bugzilla/Template.pm b/Bugzilla/Template.pm index dec9885c2..eb1496fca 100644 --- a/Bugzilla/Template.pm +++ b/Bugzilla/Template.pm @@ -653,21 +653,10 @@ our $is_processing = 0; sub process { my $self = shift; - my ($template, undef, $output) = @_; - - if (!$output && Bugzilla->usage_mode == USAGE_MODE_BROWSER) { - # if $output is not passed, this will print. - my $cgi = Bugzilla->cgi; - unless ($cgi->sent_headers) { - warn "attempted to process $template before sending headers!"; - print $cgi->header(); - } - } - # All of this current_langs stuff allows template_inner to correctly # determine what-language Template object it should instantiate. my $current_langs = Bugzilla->request_cache->{template_current_lang} ||= []; - unshift @$current_langs, $self->context->{bz_language}; + unshift(@$current_langs, $self->context->{bz_language}); local $is_processing = 1; my $retval = $self->SUPER::process(@_); shift @$current_langs; |