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

Reply via email to