From 2d95420e2255db25c0a5d9ec1dfee13aef1dcff6 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Tue, 17 Jan 2023 07:19:04 +0000 Subject: git|gcf2: switch to awaitpid This is a trivial change compared to Qspawn in the previous commit. --- lib/PublicInbox/Gcf2Client.pm | 5 +++-- lib/PublicInbox/Git.pm | 10 +++++----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/lib/PublicInbox/Gcf2Client.pm b/lib/PublicInbox/Gcf2Client.pm index 09c3aa06..a49e2aad 100644 --- a/lib/PublicInbox/Gcf2Client.pm +++ b/lib/PublicInbox/Gcf2Client.pm @@ -1,4 +1,4 @@ -# Copyright (C) 2020-2021 all contributors +# Copyright (C) all contributors # License: AGPL-3.0+ # connects public-inbox processes to PublicInbox::Gcf2::loop() @@ -10,6 +10,7 @@ use PublicInbox::Gcf2; # fails if Inline::C or libgit2-dev isn't available use PublicInbox::Spawn qw(spawn); use Socket qw(AF_UNIX SOCK_STREAM); use PublicInbox::Syscall qw(EPOLLIN EPOLLET); +use PublicInbox::DS qw(awaitpid); # fields: # sock => socket to Gcf2::loop # The rest of these fields are compatible with what PublicInbox::Git @@ -30,7 +31,7 @@ sub new { $rdr->{0} = $rdr->{1} = $s2; my $cmd = [$^X, qw[-MPublicInbox::Gcf2 -e PublicInbox::Gcf2::loop]]; $self->{'pid.owner'} = $$; - $self->{pid} = spawn($cmd, $env, $rdr); + awaitpid($self->{pid} = spawn($cmd, $env, $rdr), undef); $s1->blocking(0); $self->{inflight} = []; $self->{in} = $s1; diff --git a/lib/PublicInbox/Git.pm b/lib/PublicInbox/Git.pm index 96627daa..c9ed48be 100644 --- a/lib/PublicInbox/Git.pm +++ b/lib/PublicInbox/Git.pm @@ -21,7 +21,7 @@ use PublicInbox::Tmpfile; use IO::Poll qw(POLLIN); use Carp qw(croak carp); use Digest::SHA (); -use PublicInbox::DS qw(dwaitpid); +use PublicInbox::DS qw(awaitpid); our @EXPORT_OK = qw(git_unquote git_quote); our $PIPE_BUFSIZ = 65536; # Linux default our $in_cleanup; @@ -138,7 +138,7 @@ sub _bidi_pipe { $rdr->{2} = $fh; } my ($in_r, $p) = popen_rd(\@cmd, undef, $rdr); - $self->{$pid} = $p; + awaitpid($self->{$pid} = $p, undef); $self->{"$pid.owner"} = $$; $out_w->autoflush(1); if ($^O eq 'linux') { # 1031: F_SETPIPE_SZ @@ -357,9 +357,9 @@ sub _destroy { delete @$self{($rbuf, $in, $out)}; delete $self->{$err} if $err; # `err_c' - # GitAsyncCat::event_step may delete {pid} - my $p = delete $self->{$pid} or return; - dwaitpid($p) if $$ == $self->{"$pid.owner"}; + # GitAsyncCat::event_step may delete {$pid} + my $p = delete($self->{$pid}) // return; + awaitpid($p) if $$ == $self->{"$pid.owner"}; } sub async_abort ($) { -- cgit v1.2.3-24-ge0c7