]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/LeiMirror.pm
lei: TSTP affects all curl and related subprocesses
[public-inbox.git] / lib / PublicInbox / LeiMirror.pm
index fb73d86316707f83d2df32431e89bc97ae97fb63..a75c99c4987f27906185b3921de10eb006314f4b 100644 (file)
@@ -7,9 +7,10 @@ use strict;
 use v5.10.1;
 use parent qw(PublicInbox::IPC);
 use PublicInbox::Config;
+use PublicInbox::AutoReap;
 use IO::Uncompress::Gunzip qw(gunzip $GunzipError);
 use IO::Compress::Gzip qw(gzip $GzipError);
-use PublicInbox::Spawn qw(popen_rd spawn run_die);
+use PublicInbox::Spawn qw(popen_rd spawn);
 use File::Temp ();
 use Fcntl qw(SEEK_SET O_CREAT O_EXCL O_WRONLY);
 use Carp qw(croak);
@@ -192,11 +193,8 @@ sub index_cloned_inbox {
 sub run_reap {
        my ($lei, $cmd, $opt) = @_;
        $lei->qerr("# @$cmd");
-       $opt->{pgid} = 0 if $lei->{sock};
-       my $pid = spawn($cmd, undef, $opt);
-       my $reap = PublicInbox::OnDestroy->new($lei->can('sigint_reap'), $pid);
-       waitpid($pid, 0) == $pid or die "waitpid @$cmd: $!";
-       @$reap = (); # cancel reap
+       my $ar = PublicInbox::AutoReap->new(spawn($cmd, undef, $opt));
+       $ar->join;
        my $ret = $?;
        $? = 0; # don't let it influence normal exit
        $ret;
@@ -460,7 +458,6 @@ sub start {
 sub ipc_atfork_child {
        my ($self) = @_;
        $self->{lei}->_lei_atfork_child;
-       $SIG{TERM} = sub { exit(128 + 15) }; # trigger OnDestroy $reap
        $self->SUPER::ipc_atfork_child;
 }