use File::Basename;
use URI;
-use Carp qw(cluck);
BEGIN {
if (ON_WINDOWS) {
return 0;
}
+# Overwrite to ensure nph doesn't get set, and unset HEADERS_ONCE
sub multipart_init {
my $self = shift;
# 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;
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(@_));
}
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 {
}
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};
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;
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;
[% title = "Field Type Not Specified" %]
You must specify a type when creating a custom field.
- [% ELSIF error == "headers_already_sent" %]
- [% title = "Tried to send headers twice" %]
- Somewhere inside [% terms.Bugzilla %], code attempted to sent HTTP headers more than once.
-
[% ELSIF error == "illegal_content_type_method" %]
Your form submission got corrupted somehow. The <em>content
method</em> field, which specifies how the content type gets determined,