Konstantin Ryabitsev <[email protected]> wrote:
> On Fri, 27 Aug 2021 at 09:03, Konstantin Ryabitsev
> <[email protected]> wrote:
> > > Just making /all/ show up at the top like a normal inbox (and
> > > letting the admin decide on description) seems sufficient.  If
> > > users can get to /all/ then they can search /all/ as normal.
> >
> > Sure, this works for me, too, thanks!
> > https://x-lore.kernel.org/
> 
> Hmm.. I just noticed that the "all" link has vanished. The source is showing:
> 
> <pre>* 2021-08-27 13:24 - <a
> href=""></a>
>   All of lore.kernel.org
> 
> Restarting public-inbox-httpd fixes it, but I wonder if it will happen again.

If it happens once, it'll happen again.  I'm not sure which code
path triggers it, but maybe this will fix it.  There's also a secondary
patch below which may be more complete, but may also be
unneeded.

--------------8<-------------
Subject: [PATCH] www: avoid potential auto-vivification on ibx->{url}

This may fix problems with the "all" link disappearing.

Link: 
https://public-inbox.org/meta/CAMwyc-Tw=v5yT1U1U66GSwwTK8OJXv8_YDu-=oxbzo3thsn...@mail.gmail.com/
---
 lib/PublicInbox/Inbox.pm      | 3 ++-
 lib/PublicInbox/WwwListing.pm | 2 +-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/lib/PublicInbox/Inbox.pm b/lib/PublicInbox/Inbox.pm
index df140cac..b0bb9dcc 100644
--- a/lib/PublicInbox/Inbox.pm
+++ b/lib/PublicInbox/Inbox.pm
@@ -250,7 +250,8 @@ sub base_url {
        }
        # called from a non-PSGI environment (e.g. NNTP/POP3):
        $self->{-base_url} ||= do {
-               my $url = $self->{url}->[0] or return undef;
+               my $url = $self->{url} // return undef;
+               $url = $url->[0] // return undef;
                # expand protocol-relative URLs to HTTPS if we're
                # not inside a web server
                $url = "https:$url" if $url =~ m!\A//!;
diff --git a/lib/PublicInbox/WwwListing.pm b/lib/PublicInbox/WwwListing.pm
index 1bb5fbd0..fe5ee087 100644
--- a/lib/PublicInbox/WwwListing.pm
+++ b/lib/PublicInbox/WwwListing.pm
@@ -41,7 +41,7 @@ sub list_match_i { # ConfigIter callback
                return if $section !~ m!\Apublicinbox\.([^/]+)\z!;
                my $ibx = $cfg->lookup_name($1) or return;
                if (!$ibx->{-hide}->{$ctx->hide_key} &&
-                                       grep(/$re/, @{$ibx->{url}})) {
+                                       grep(/$re/, @{$ibx->{url} // []})) {
                        $ctx->ibx_entry($ibx);
                }
        } else { # undef == "EOF"

--------8<------
Secondary patch in case extindex $ibx->{url} got vivified somewhere:

diff --git a/lib/PublicInbox/WwwListing.pm b/lib/PublicInbox/WwwListing.pm
index fe5ee087..ef9048b5 100644
--- a/lib/PublicInbox/WwwListing.pm
+++ b/lib/PublicInbox/WwwListing.pm
@@ -17,7 +17,7 @@ sub ibx_entry {
        my $desc = ascii_html($ce->{description} //= $ibx->description);
        my $ts = fmt_ts($ce->{-modified} //= $ibx->modified);
        my ($url, $href);
-       if (defined($ibx->{url})) {
+       if (scalar(@{$ibx->{url} // []})) {
                $url = $href = ascii_html(prurl($ctx->{env}, $ibx->{url}));
        } else {
                $href = ascii_html(uri_escape_utf8($ibx->{name})) . '/';
--
unsubscribe: one-click, see List-Unsubscribe header
archive: https://public-inbox.org/meta/

Reply via email to