Uwe Kleine-König <[email protected]> wrote:
> Hello,
>
> The mail by Alexander Dahl that is (currently) the first hit on
> https://lore.ptxdist.org/ptxdist/?q=ptxd_make_world_compile_commands_filter
> results in a 404 when I follow the link.
>
> The original mail has
>
> Message-ID: <Y+07h0l/[email protected]>
>
> and the corresponding link is:
>
>
> https://lore.ptxdist.org/ptxdist/y+07h0l%[email protected]/
>
> I noticed this on public-inbox 1.8.0-1~bpo11+1 from Debian, upgrading to
> 1.9.0-1~bpo11+1 didn't help.
>
> Other mails with / in Message-Id are not accessible either, I tested
> with:
>
> YyHu/412LT8uQTy1@lenoch
> Y0/5xdFZO3u0952+@lenoch
The TODO file has this:
* use REQUEST_URI properly for CGI / mod_perl2 compatibility
with Message-IDs which include '%' (done?)
So I guess it's not done... To deal with '/' in the Message-ID,
$env->{REQUEST_URI} really needs to be the raw, undecoded URI
specified in the PSGI specs[1].
I'm not sure how to go about it Apache+CGI or mod_perl2..
Fwiw, the recommended configuration is:
(nginx|haproxy) -> varnish -> public-inbox-{httpd,netd}
Maybe Apache2 mpm_event reverse proxy can work in lieu of
(nginx|haproxy), but /T/, /t/, /t.mbox.gz requests are a bit
faster on -httpd/-netd since 1.6+ on SMP machines.
> I also wonder why these mails yield the webserver's 404 page and not the
> one provided by the public-inbox cgi?!
This may be the small size public-inbox's 404 page. I don't
know Apache configs well, but I know nginx did something
similar.
> Is this a problem in public-inbox, or is the apache configuration
> somehow borked? Any hints welcome.
Do you have access to that server and can show us the configs?
REQUEST_URI really needs to be raw in accordance to PSGI specs.
This can dump the request $env to stderr and show us
REQUEST_URI, PATH_INFO, SCRIPT_NAME, and anything else
which may enlighten us:
diff --git a/lib/PublicInbox/WWW.pm b/lib/PublicInbox/WWW.pm
index 9ffcb879..f67fe8e6 100644
--- a/lib/PublicInbox/WWW.pm
+++ b/lib/PublicInbox/WWW.pm
@@ -52,7 +52,8 @@ sub call {
# none of the keys we care about will need escaping
($k // '', uri_unescape($v // ''))
} split(/[&;]+/, $env->{QUERY_STRING});
-
+ use Data::Dumper; $Data::Dumper::Useqq = 1;
+ warn Dumper($env);
my $path_info = path_info_raw($env);
my $method = $env->{REQUEST_METHOD};
[1] PSGI specs: git clone https://github.com/plack/psgi-specs