X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FLeiRemote.pm;h=54750062fd5f18c0c680c672f6eb544d04a77c95;hb=4b5a1b5787edee2a3b6cc10a3ccc5721f1414268;hp=7782aa9dbfa132bef82301130a3450fd5d6a8b30;hpb=f64fdbc7cc19a34f471abaeada9195597bf7a282;p=public-inbox.git diff --git a/lib/PublicInbox/LeiRemote.pm b/lib/PublicInbox/LeiRemote.pm index 7782aa9d..54750062 100644 --- a/lib/PublicInbox/LeiRemote.pm +++ b/lib/PublicInbox/LeiRemote.pm @@ -9,10 +9,10 @@ package PublicInbox::LeiRemote; use v5.10.1; use strict; use IO::Uncompress::Gunzip; -use PublicInbox::OnDestroy; use PublicInbox::MboxReader; use PublicInbox::Spawn qw(popen_rd); use PublicInbox::LeiCurl; +use PublicInbox::AutoReap; use PublicInbox::ContentHash qw(git_sha); sub new { @@ -47,17 +47,14 @@ sub mset { $uri->query_form(q => $qstr, x => 'm', r => 1); # r=1: relevance my $cmd = $curl->for_uri($self->{lei}, $uri); $self->{lei}->qerr("# $cmd"); - my $rdr = { 2 => $lei->{2}, pgid => 0 }; - my ($fh, $pid) = popen_rd($cmd, undef, $rdr); - my $reap = PublicInbox::OnDestroy->new($lei->can('sigint_reap'), $pid); + my ($fh, $pid) = popen_rd($cmd, undef, { 2 => $lei->{2} }); + my $ar = PublicInbox::AutoReap->new($pid); $self->{smsg} = []; $fh = IO::Uncompress::Gunzip->new($fh, MultiStream => 1); PublicInbox::MboxReader->mboxrd($fh, \&_each_mboxrd_eml, $self); - my $err = waitpid($pid, 0) == $pid ? undef - : "BUG: waitpid($cmd): $!"; - @$reap = (); # cancel OnDestroy my $wait = $self->{lei}->{sto}->wq_do('done'); - die $err if $err; + $ar->join; + $lei->child_error($?) if $?; $self; # we are the mset (and $ibx, and $self) }