]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/LeiXSearch.pm
ipc+lei: switch to awaitpid
[public-inbox.git] / lib / PublicInbox / LeiXSearch.pm
index 730df1f772f12da20821b3546e4e459b57419689..f9aa870e0346247acbde426b7bda894105a38725 100644 (file)
@@ -400,9 +400,8 @@ sub query_remote_mboxrd {
 
 sub git { $_[0]->{git} // die 'BUG: git uninitialized' }
 
-sub xsearch_done_wait { # dwaitpid callback
-       my ($arg, $pid) = @_;
-       my ($wq, $lei) = @$arg;
+sub xsearch_done_wait { # awaitpid cb (via awaitpid_init)
+       my ($pid, $wq, $lei) = @_;
        return if !$?;
        my $s = $? & 127;
        return $lei->child_error($?) if $s == 13 || $s == 15;
@@ -573,16 +572,16 @@ sub do_query {
                        fcntl($b_r, $F_SETPIPE_SZ, 4096) if $F_SETPIPE_SZ;
                        $l2m->{au_peers} = [ $a_r, $a_w, $b_r, $b_w ];
                }
+               $l2m->awaitpid_init(\&xsearch_done_wait, $lei);
                $l2m->wq_workers_start('lei2mail', undef,
                                        $lei->oldset, { lei => $lei });
-               $l2m->wq_wait_async(\&xsearch_done_wait, $lei);
                pipe($lei->{startq}, $lei->{au_done}) or die "pipe: $!";
                fcntl($lei->{startq}, $F_SETPIPE_SZ, 4096) if $F_SETPIPE_SZ;
                delete $l2m->{au_peers};
        }
+       $self->awaitpid_init(\&xsearch_done_wait, $lei);
        $self->wq_workers_start('lei_xsearch', undef,
                                $lei->oldset, { lei => $lei });
-       $self->wq_wait_async(\&xsearch_done_wait, $lei);
        my $op_c = delete $lei->{pkt_op_c};
        delete $lei->{pkt_op_p};
        @$end = ();