Bug 342757: searching results in "YOUR BROWSER DOESN'T SUPPORT THIS SERVER-PUSH TECHNOLOGY" warning on brower under mod_perl

Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=justdave, a=justdave
This commit is contained in:
mkanat%bugzilla.org 2006-07-12 06:05:07 +00:00
Родитель 879c12013f
Коммит d24dd587f4
2 изменённых файлов: 22 добавлений и 10 удалений

Просмотреть файл

@ -158,14 +158,27 @@ sub multipart_init {
# CGI.pm's header() sets nph according to a param or $CGI::NPH, which
# is the desired behaviour.
# Allow multiple calls to $cgi->header()
$CGI::HEADERS_ONCE = 0;
return $self->header(
%param,
) . "WARNING: YOUR BROWSER DOESN'T SUPPORT THIS SERVER-PUSH TECHNOLOGY." . $self->multipart_end;
}
# Have to add the cookies in.
sub multipart_start {
my $self = shift;
my $headers = $self->SUPER::multipart_start(@_);
# Eliminate the one extra CRLF at the end.
$headers =~ s/$CGI::CRLF$//;
# Add the cookies. We have to do it this way instead of
# passing them to multpart_start, because CGI.pm's multipart_start
# doesn't understand a '-cookie' argument pointing to an arrayref.
foreach my $cookie (@{$self->{Bugzilla_cookie_list}}) {
$headers .= "Set-Cookie: ${cookie}${CGI::CRLF}";
}
$headers .= $CGI::CRLF;
return $headers;
}
# Override header so we can add the cookies in
sub header {
my $self = shift;
@ -183,13 +196,6 @@ sub header {
return $self->SUPER::header(@_) || "";
}
# Override multipart_start to ensure our cookies are added and avoid bad quoting of
# CGI's multipart_start (bug 275108)
sub multipart_start {
my $self = shift;
return $self->header(@_);
}
# The various parts of Bugzilla which create cookies don't want to have to
# pass them around to all of the callers. Instead, store them locally here,
# and then output as required from |header|.

Просмотреть файл

@ -884,6 +884,12 @@ if ($serverpush) {
$template->process("list/server-push.html.tmpl", $vars)
|| ThrowTemplateError($template->error());
# Under mod_perl, flush stdout so that the page actually shows up.
if ($ENV{MOD_PERL}) {
require Apache2::RequestUtil;
Apache2::RequestUtil->request->rflush();
}
# Don't do multipart_end() until we're ready to display the replacement
# page, otherwise any errors that happen before then (like SQL errors)
# will result in a blank page being shown to the user instead of the error.