From 3cf66514aea9e958999973b9f104473b6d800fbe Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Tue, 2 Apr 2019 02:29:44 +0000 Subject: www: fix missing cgit fallback after legacy redirects We need to instate our cgit handler everywhere we use NewsWWW to catch wildcard requests which our normal endpoints do not handle. --- lib/PublicInbox/WWW.pm | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'lib') diff --git a/lib/PublicInbox/WWW.pm b/lib/PublicInbox/WWW.pm index 6e14e8c1..798e8b17 100644 --- a/lib/PublicInbox/WWW.pm +++ b/lib/PublicInbox/WWW.pm @@ -175,11 +175,18 @@ sub r404 { # simple response for errors sub r { [ $_[0], ['Content-Type' => 'text/plain'], [ join(' ', @_, "\n") ] ] } +sub news_cgit_fallback ($) { + my ($ctx) = @_; + my $www = $ctx->{www}; + my $env = $ctx->{env}; + my $res = $www->news_www->call($env); + $res->[0] == 404 ? $www->cgit->call($env) : $res; +} + # returns undef if valid, array ref response if invalid sub invalid_inbox ($$) { my ($ctx, $inbox) = @_; - my $www = $ctx->{www}; - my $obj = $www->{pi_config}->lookup_name($inbox); + my $obj = $ctx->{www}->{pi_config}->lookup_name($inbox); if (defined $obj) { $ctx->{git} = $obj->git; $ctx->{-inbox} = $obj; @@ -190,9 +197,7 @@ sub invalid_inbox ($$) { # generation and link things intended for nntp:// to https?://, # so try to infer links and redirect them to the appropriate # list URL. - my $env = $ctx->{env}; - my $res = $www->news_www->call($env); - $res->[0] == 404 ? $www->cgit->call($env) : $res; + news_cgit_fallback($ctx); } # returns undef if valid, array ref response if invalid @@ -392,7 +397,7 @@ sub legacy_redirects { } elsif ($path_info =~ m!$INBOX_RE/(\S+/\S+)/f\z!o) { r301($ctx, $1, $2); } else { - $ctx->{www}->news_www->call($ctx->{env}); + news_cgit_fallback($ctx); } } -- cgit v1.2.3-24-ge0c7