X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FInbox.pm;h=3ba92c997f2c669911e4f6667f5576ff1cd4c613;hb=69225ecae508b9bb83960ac51e38d7d5eade2a6a;hp=c0962af9864411970c9c9f16f5f35076548d19b6;hpb=71f6861703fde6f6687b002cd15c38cb7ef4a028;p=public-inbox.git diff --git a/lib/PublicInbox/Inbox.pm b/lib/PublicInbox/Inbox.pm index c0962af9..3ba92c99 100644 --- a/lib/PublicInbox/Inbox.pm +++ b/lib/PublicInbox/Inbox.pm @@ -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); } @@ -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; }