PublicInbox::MboxGz::mbox_gz($ctx, \&all_ids_cb, 'all');
}
+sub gone ($$) {
+ my ($ctx, $what) = @_;
+ warn "W: `$ctx->{-inbox}->{inboxdir}' $what went away unexpectedly\n";
+ undef;
+}
+
sub results_cb {
my ($ctx) = @_;
- my $over = $ctx->{-inbox}->over or return;
+ my $over = $ctx->{-inbox}->over or return gone($ctx, 'over');
while (1) {
while (defined(my $num = shift(@{$ctx->{ids}}))) {
my $smsg = $over->get_art($num) or next;
return $smsg;
}
# refill result set
- my $srch = $ctx->{-inbox}->search(undef, $ctx) or return;
- my $mset = $srch->query($ctx->{query}, $ctx->{qopts});
+ my $srch = $ctx->{-inbox}->search or return gone($ctx,'search');
+ my $mset = $srch->mset($ctx->{query}, $ctx->{qopts});
my $size = $mset->size or return;
$ctx->{qopts}->{offset} += $size;
$ctx->{ids} = $srch->mset_to_artnums($mset);
sub results_thread_cb {
my ($ctx) = @_;
- my $over = $ctx->{-inbox}->over or return;
+ my $over = $ctx->{-inbox}->over or return gone($ctx, 'over');
while (1) {
while (defined(my $num = shift(@{$ctx->{xids}}))) {
my $smsg = $over->get_art($num) or next;
next if $over->expand_thread($ctx);
# refill result set
- my $srch = $ctx->{-inbox}->search(undef, $ctx) or return;
- my $mset = $srch->query($ctx->{query}, $ctx->{qopts});
+ my $srch = $ctx->{-inbox}->search or return gone($ctx,'search');
+ my $mset = $srch->mset($ctx->{query}, $ctx->{qopts});
my $size = $mset->size or return;
$ctx->{qopts}->{offset} += $size;
$ctx->{ids} = $srch->mset_to_artnums($mset);
my $qopts = $ctx->{qopts} = { mset => 2 }; # order by docid
$qopts->{thread} = 1 if $q->{t};
- my $mset = $srch->query($q_string, $qopts);
+ my $mset = $srch->mset($q_string, $qopts);
$qopts->{offset} = $mset->size or
return [404, [qw(Content-Type text/plain)],
["No results found\n"]];