lib/PublicInbox/WWW.pm | 17 +++++++++++------ diff --git a/lib/PublicInbox/WWW.pm b/lib/PublicInbox/WWW.pm index 6e14e8c1d87ab9886c3d404e3ac310ab1f3317de..798e8b17c04b007400db465ab84f0b889bec9972 100644 --- a/lib/PublicInbox/WWW.pm +++ b/lib/PublicInbox/WWW.pm @@ -175,11 +175,18 @@ # 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 @@ # sometimes linkifiers (not ours!) screw up automatic link # 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 @@ r301($ctx, $1, $2, $3 eq 't' ? 't/#u' : $3); } 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); } }