diff options
Diffstat (limited to 'Bugzilla')
-rw-r--r-- | Bugzilla/CGI.pm | 15 | ||||
-rw-r--r-- | Bugzilla/Error.pm | 4 |
2 files changed, 18 insertions, 1 deletions
diff --git a/Bugzilla/CGI.pm b/Bugzilla/CGI.pm index 0adb46a62..a12fb284b 100644 --- a/Bugzilla/CGI.pm +++ b/Bugzilla/CGI.pm @@ -310,9 +310,24 @@ sub multipart_start { $headers .= "Set-Cookie: ${cookie}${CGI::CRLF}"; } $headers .= $CGI::CRLF; + $self->{_multipart_in_progress} = 1; return $headers; } +sub close_standby_message { + my ($self, $contenttype, $disposition) = @_; + + if ($self->{_multipart_in_progress}) { + print $self->multipart_end(); + print $self->multipart_start(-type => $contenttype, + -content_disposition => $disposition); + } + else { + print $self->header(-type => $contenttype, + -content_disposition => $disposition); + } +} + # Override header so we can add the cookies in sub header { my $self = shift; diff --git a/Bugzilla/Error.pm b/Bugzilla/Error.pm index 41345e11b..6e3309778 100644 --- a/Bugzilla/Error.pm +++ b/Bugzilla/Error.pm @@ -117,9 +117,11 @@ sub _throw_error { $vars->{maintainers_notified} = 0; } - print Bugzilla->cgi->header(); + my $cgi = Bugzilla->cgi; + $cgi->close_standby_message('text/html', 'inline'); $template->process($name, $vars) || ThrowTemplateError($template->error()); + print $cgi->multipart_final() if $cgi->{_multipart_in_progress}; if ($vars->{maintainers_notified}) { sentry_handle_error($vars->{error}, $vars->{processed}->{error_message}); |