]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/Inbox.pm
inbox: cloneurl: avoid undef to hash table value
[public-inbox.git] / lib / PublicInbox / Inbox.pm
index c0962af9864411970c9c9f16f5f35076548d19b6..1d5fc708ad28b2649cf5a2460bfcbba96c8f3eeb 100644 (file)
@@ -167,12 +167,12 @@ sub mm {
 
 sub search {
        my ($self) = @_;
-       my $srch = $self->{search} //= eval {
+       $self->{search} // eval {
                _cleanup_later($self);
                require PublicInbox::Search;
-               PublicInbox::Search->new($self);
+               my $srch = PublicInbox::Search->new($self);
+               (eval { $srch->xdb }) ? ($self->{search} = $srch) : undef;
        };
-       (eval { $srch->xdb }) ? $srch : undef;
 }
 
 # isrch is preferred for read-only interfaces if available since it
@@ -181,15 +181,14 @@ sub isrch { $_[0]->{isrch} // search($_[0]) }
 
 sub over {
        my ($self, $req) = @_;
-       $self->{over} //= eval {
-               my $srch = $self->{search} //= do {
-                       _cleanup_later($self);
+       $self->{over} // eval {
+               my $srch = $self->{search} // do {
                        require PublicInbox::Search;
                        PublicInbox::Search->new($self);
                };
                my $over = PublicInbox::Over->new("$srch->{xpfx}/over.sqlite3");
                $over->dbh; # may fail
-               $over;
+               $self->{over} = $over;
        } // ($req ? croak("E: $@") : undef);
 }
 
@@ -217,11 +216,11 @@ sub description {
 
 sub cloneurl {
        my ($self) = @_;
-       ($self->{cloneurl} //= do {
+       $self->{cloneurl} // do {
                my $s = try_cat("$self->{inboxdir}/cloneurl");
                my @urls = split(/\s+/s, $s);
-               scalar(@urls) ? \@urls : undef
-       }) // [];
+               scalar(@urls) ? ($self->{cloneurl} = \@urls) : undef;
+       } // [];
 }
 
 sub base_url {
@@ -293,7 +292,7 @@ sub imap_url { $_[0]->{-imap_url} //= _x_url($_[0], 'imap', $_[1]) }
 sub nntp_usable {
        my ($self) = @_;
        my $ret = mm($self) && over($self);
-       $self->{mm} = $self->{over} = $self->{search} = undef;
+       delete @$self{qw(mm over search)};
        $ret;
 }