my $pi_config = $ctx->{pi_config};
my $listname = $ctx->{listname};
my $mid = $ctx->{mid};
+ my $cgi = $ctx->{cgi};
+ my $env = $cgi->{env};
eval { require PublicInbox::Search };
my $have_xap = $@ ? 0 : 1;
defined $url or next;
$url =~ s!/+\z!!;
+ $url = PublicInbox::Hval::prurl($env, $url);
# try to find the URL with Xapian to avoid forking
if ($have_xap) {
eval { require PublicInbox::Msgmap };
my $have_mm = $@ ? 0 : 1;
- my $cgi = $ctx->{cgi};
- my $base_url;
- my $scheme;
- if (ref($cgi) eq 'CGI') {
- $base_url = $cgi->url(-base) . '/';
- $scheme = $cgi->protocol;
- } else { # Plack::Request
- $base_url = $cgi->base->as_string;
- $scheme = $cgi->env->{'psgi.url_scheme'};
- }
+ my $base_url = $cgi->base->as_string;
if ($have_mm) {
my $tmp_mid = $mid;
my $url;
if (@EXT_URL && index($mid, '@') >= 0) {
$code = 300;
$s .= "\nPerhaps try an external site:\n\n";
- foreach my $u (@EXT_URL) {
- $u = "$scheme:$u" if $u =~ m!\A//!;
+ foreach my $url (@EXT_URL) {
+ my $u = PublicInbox::Hval::prurl($env, $url);
my $r = sprintf($u, $href);
my $t = sprintf($u, $html);
$s .= qq{<a\nhref="$r">$t</a>\n};
}
$s .= '</pre></body></html>';
- [300, ['Content-Type'=>'text/html; charset=UTF-8'], [$s]];
+ [$code, ['Content-Type'=>'text/html; charset=UTF-8'], [$s]];
}
# Redirect to another public-inbox which is mapped by $pi_config