Francois Gouget : testbot/web: Document and slightly optimize PageBase::Redirect().
Module: tools Branch: master Commit: 900e6913a2c2eefac07a0947fcc254aa62974410 URL: https://source.winehq.org/git/tools.git/?a=commit;h=900e6913a2c2eefac07a0947... Author: Francois Gouget <fgouget(a)codeweavers.com> Date: Thu Sep 26 13:35:22 2019 +0200 testbot/web: Document and slightly optimize PageBase::Redirect(). Signed-off-by: Francois Gouget <fgouget(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- testbot/lib/WineTestBot/CGI/PageBase.pm | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/testbot/lib/WineTestBot/CGI/PageBase.pm b/testbot/lib/WineTestBot/CGI/PageBase.pm index c1a8c8c..e3d2e04 100644 --- a/testbot/lib/WineTestBot/CGI/PageBase.pm +++ b/testbot/lib/WineTestBot/CGI/PageBase.pm @@ -395,18 +395,18 @@ sub Redirect($$$) $self->SetCookies(); if (substr($Location, 0, 4) ne "http") { - my $Protocol = "http"; - if (SecureConnection()) - { - $Protocol .= "s"; - } + # Use the same protocol as for the current page. To force switching to + # https the caller should use MakeSecureURL(). + my $Protocol = SecureConnection() ? "https://" : "http://"; if (substr($Location, 0, 1) ne "/") { + # Despite its name, Request->uri only contains the path portion of the + # URI, excluding the protocol, hostname and parameters! my $URI = $self->{Request}->uri; - $URI =~ s=^(.*)/[^/]*$=$1/=; - $Location = $URI . $Location; + $URI =~ s=^(.*)/[^/]*$=$1/$Location=; + $Location = $URI; } - $Location = $Protocol . "://" . $ENV{"HTTP_HOST"} . $Location; + $Location = $Protocol . $ENV{"HTTP_HOST"} . $Location; } $self->{Request}->headers_out->set("Location", $Location); $self->{Request}->status(Apache2::Const::REDIRECT);
participants (1)
-
Alexandre Julliard