From: Jakub Narebski <jnareb@gmail.com>
To: Jonathan Nieder <jrnieder@gmail.com>
Cc: Daniel Reichelt <debian@nachtgeist.net>,
Giuseppe Bilotta <giuseppe.bilotta@gmail.com>,
git@vger.kernel.org
Subject: Re: gitweb: false base href sent when integrated via reverse proxy and path_info is active
Date: Sun, 28 Nov 2010 23:05:35 +0100 [thread overview]
Message-ID: <201011282305.39975.jnareb@gmail.com> (raw)
In-Reply-To: <20101128211054.GA20203@burratino>
On Sun, 28 Nov 2010, Jonathan Nieder wrote:
> Daniel Reichelt wrote:
>
> > However, I just tried that and it failed. $base_url gets ignored in
> > gitweb.conf and even setting $my_url and $my_uri in gitweb.conf seems to
> > have no effect at all.
>
> Aha. The bug fixed by v1.7.3-rc0~85^2 (gitweb: allow configurations
> that change with each request, 2010-07-30) strikes again.
>
> Daniel, could you try again with version 1:1.7.2.3-2.1 (from Debian sid)?
>
> Jakub, we should probably tweak evaluate_uri to do something special if
> $base_url is already set, or advertise that $base_url needs to be set
> in per_request_config when that feature is enabled.
Jonathan, something like this, perhaps?
-- >8 ---- >8 --
From: Jakub Narebski <jnareb@gmail.com>
Subject: [PATCH/RFC] gitweb: Preserve $base_url if it was set
If $base_url was defined, then do not redefine it in evaluate_uri().
This matters only in the case when $base_url was set in gitweb config
file, and $per_request_config is false or is coderef; without this
change $base_url would get overwritten on subsequent requests from the
value set in config.
If you need $base_url that can change with request, but the default
value set by gitweb doesn't work for you, and you want most of gitweb
config file to be evaluated only once, you need to use $per_request_config
coderef to set it.
Possible-issue-reported-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Jakub Narebski <jnareb@gmail.com>
---
On top of (gitweb: selectable configurations that change with each
request, 2010-11-28).
gitweb/gitweb.perl | 13 ++++++++-----
1 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index 1d94718..5efee0d 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -36,10 +36,9 @@ sub evaluate_uri {
our $my_url = $cgi->url();
our $my_uri = $cgi->url(-absolute => 1);
- # Base URL for relative URLs in gitweb ($logo, $favicon, ...),
- # needed and used only for URLs with nonempty PATH_INFO
- our $base_url = $my_url;
-
+ # $base_url contains base URL for relative URLs in gitweb ($logo, $favicon, ...);
+ # it is needed and it is used only for URLs with nonempty PATH_INFO
+ #
# When the script is used as DirectoryIndex, the URL does not contain the name
# of the script file itself, and $cgi->url() fails to strip PATH_INFO, so we
# have to do it ourselves. We make $path_info global because it's also used
@@ -57,7 +56,11 @@ sub evaluate_uri {
if ($my_url =~ s,\Q$path_info\E$,, &&
$my_uri =~ s,\Q$path_info\E$,, &&
defined $ENV{'SCRIPT_NAME'}) {
- $base_url = $cgi->url(-base => 1) . $ENV{'SCRIPT_NAME'};
+ # preserve existing $base_url
+ $base_url ||= $cgi->url(-base => 1) . $ENV{'SCRIPT_NAME'};
+ } else {
+ # in case e.g. $ENV{'SCRIPT_NAME'} is not defined
+ $base_url ||= $my_url;
}
}
--
1.7.3
next prev parent reply other threads:[~2010-11-28 22:06 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20101128081048.13668.67286.reportbug@sb74.startrek>
2010-11-28 16:27 ` gitweb: false base href sent when integrated via reverse proxy and path_info is active Jonathan Nieder
2010-11-28 17:25 ` Giuseppe Bilotta
2010-11-28 17:47 ` Jakub Narebski
2010-11-28 18:12 ` Jonathan Nieder
2010-11-30 18:22 ` Jakub Narebski
2010-12-01 3:25 ` Junio C Hamano
2010-11-28 20:30 ` Daniel Reichelt
2010-11-28 21:07 ` Jakub Narebski
2010-11-28 21:25 ` Daniel Reichelt
2010-11-28 21:10 ` Jonathan Nieder
2010-11-28 21:28 ` Daniel Reichelt
2010-11-28 22:05 ` Jakub Narebski [this message]
2010-11-29 0:19 ` [PATCH/RFC] gitweb: Preserve $base_url if it was set Jonathan Nieder
2010-11-29 0:51 ` [PATCH/RFC] gitweb/README: About $base_url etc. and $per_request_config Jakub Narebski
2010-11-29 17:57 ` [PATCH/RFC] gitweb: Preserve $base_url if it was set Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201011282305.39975.jnareb@gmail.com \
--to=jnareb@gmail.com \
--cc=debian@nachtgeist.net \
--cc=git@vger.kernel.org \
--cc=giuseppe.bilotta@gmail.com \
--cc=jrnieder@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).