summaryrefslogtreecommitdiffstats
path: root/Bugzilla/Util.pm
diff options
context:
space:
mode:
authorFrédéric Buclin <LpSolit@gmail.com>2016-04-09 01:15:25 +0200
committerFrédéric Buclin <LpSolit@gmail.com>2016-04-09 01:15:25 +0200
commitfa360bee1863b1cb715a29966567ae08118de9a5 (patch)
tree1a1509aa44770306882f8f85b76bef1d08887e58 /Bugzilla/Util.pm
parent60299ec5c0edac882d5552be61e4602e71447af8 (diff)
downloadbugzilla-fa360bee1863b1cb715a29966567ae08118de9a5.tar.gz
bugzilla-fa360bee1863b1cb715a29966567ae08118de9a5.tar.xz
Bug 1261538 - Bugzilla is unable to access attachment.cgi when ssl_redirect = true and using Plack
r=dylan
Diffstat (limited to 'Bugzilla/Util.pm')
-rw-r--r--Bugzilla/Util.pm23
1 files changed, 15 insertions, 8 deletions
diff --git a/Bugzilla/Util.pm b/Bugzilla/Util.pm
index e030ff8a8..06022ce7c 100644
--- a/Bugzilla/Util.pm
+++ b/Bugzilla/Util.pm
@@ -250,29 +250,36 @@ sub i_am_webservice {
sub do_ssl_redirect_if_required {
return if !i_am_cgi();
return if !Bugzilla->params->{'ssl_redirect'};
+ return if !Bugzilla->params->{'sslbase'};
- my $sslbase = Bugzilla->params->{'sslbase'};
-
# If we're already running under SSL, never redirect.
+ if (Bugzilla->params->{'inbound_proxies'}
+ && uc($ENV{HTTP_X_FORWARDED_PROTO} || '') eq 'HTTPS') {
+ return;
+ }
return if uc($ENV{HTTPS} || '') eq 'ON';
- # Never redirect if there isn't an sslbase.
- return if !$sslbase;
- Bugzilla->cgi->redirect_to_https();
+
+ # If called from Bugzilla::CGI->new itself, use the newly created
+ # CGI object, to avoid deep recursions.
+ my $cgi = shift || Bugzilla->cgi;
+ $cgi->redirect_to_https();
}
sub correct_urlbase {
- my $ssl = Bugzilla->params->{'ssl_redirect'};
my $urlbase = Bugzilla->params->{'urlbase'};
my $sslbase = Bugzilla->params->{'sslbase'};
if (!$sslbase) {
return $urlbase;
}
- elsif ($ssl) {
+ elsif (Bugzilla->params->{'ssl_redirect'}) {
return $sslbase;
}
+ # Return what the user currently uses.
+ elsif (Bugzilla->params->{'inbound_proxies'}) {
+ return (uc($ENV{HTTP_X_FORWARDED_PROTO} || '') eq 'HTTPS') ? $sslbase : $urlbase;
+ }
else {
- # Return what the user currently uses.
return (uc($ENV{HTTPS} || '') eq 'ON') ? $sslbase : $urlbase;
}
}