Commit d3560b44 authored by myk%mozilla.org's avatar myk%mozilla.org

Bug 347228: turn off server push and setting cookies when X-Moz request header…

Bug 347228: turn off server push and setting cookies when X-Moz request header set to "microsummary" r=lpsolit a=myk
parent c9128882
...@@ -111,6 +111,13 @@ if ((defined $cgi->param('ctype')) && ($cgi->param('ctype') eq "js")) { ...@@ -111,6 +111,13 @@ if ((defined $cgi->param('ctype')) && ($cgi->param('ctype') eq "js")) {
Bugzilla->logout_request(); Bugzilla->logout_request();
} }
# An agent is a program that automatically downloads and extracts data
# on its user's behalf. If this request comes from an agent, we turn off
# various aspects of bug list functionality so agent requests succeed
# and coexist nicely with regular user requests. Currently the only agent
# we know about is Firefox's microsummary feature.
my $agent = ($cgi->http('X-Moz') && $cgi->http('X-Moz') =~ /\bmicrosummary\b/);
# Determine the format in which the user would like to receive the output. # Determine the format in which the user would like to receive the output.
# Uses the default format if the user did not specify an output format; # Uses the default format if the user did not specify an output format;
# otherwise validates the user's choice against the list of available formats. # otherwise validates the user's choice against the list of available formats.
...@@ -134,8 +141,9 @@ my $serverpush = ...@@ -134,8 +141,9 @@ my $serverpush =
&& $ENV{'HTTP_USER_AGENT'} =~ /Mozilla.[3-9]/ && $ENV{'HTTP_USER_AGENT'} =~ /Mozilla.[3-9]/
&& (($ENV{'HTTP_USER_AGENT'} !~ /[Cc]ompatible/) || ($ENV{'HTTP_USER_AGENT'} =~ /MSIE 5.*Mac_PowerPC/)) && (($ENV{'HTTP_USER_AGENT'} !~ /[Cc]ompatible/) || ($ENV{'HTTP_USER_AGENT'} =~ /MSIE 5.*Mac_PowerPC/))
&& $ENV{'HTTP_USER_AGENT'} !~ /WebKit/ && $ENV{'HTTP_USER_AGENT'} !~ /WebKit/
&& !defined($cgi->param('serverpush')) && !$agent
|| $cgi->param('serverpush'); && !defined($cgi->param('serverpush'))
|| $cgi->param('serverpush');
my $order = $cgi->param('order') || ""; my $order = $cgi->param('order') || "";
my $order_from_cookie = 0; # True if $order set using the LASTORDER cookie my $order_from_cookie = 0; # True if $order set using the LASTORDER cookie
...@@ -1143,7 +1151,7 @@ $vars->{'defaultsavename'} = $cgi->param('query_based_on'); ...@@ -1143,7 +1151,7 @@ $vars->{'defaultsavename'} = $cgi->param('query_based_on');
my $contenttype; my $contenttype;
my $disp = "inline"; my $disp = "inline";
if ($format->{'extension'} eq "html") { if ($format->{'extension'} eq "html" && !$agent) {
if ($order) { if ($order) {
$cgi->send_cookie(-name => 'LASTORDER', $cgi->send_cookie(-name => 'LASTORDER',
-value => $order, -value => $order,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment