From eb58f478221cf4f5972d7bcf66afd23c9374fb6d Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Thu, 4 May 2017 03:10:26 -0400 Subject: distcc-tool: use `jobs` instead of trying to track PIDs manually. The old way fails in weird ways if a process dies early. --- src/chroot-tools/distcc-tool | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/chroot-tools/distcc-tool b/src/chroot-tools/distcc-tool index 5e71d51..6b03909 100755 --- a/src/chroot-tools/distcc-tool +++ b/src/chroot-tools/distcc-tool @@ -109,7 +109,6 @@ parse_DISTCC_HOSTS() { local forward_ports=$1 local DISTCC_HOSTS=$2 - local pids=() # child pids local newhosts=() local newport=8000 # next port to be used for port forwarding @@ -163,7 +162,6 @@ parse_DISTCC_HOSTS() { # set up port forwaring if $forward_ports; then socat TCP-LISTEN:${newport},reuseaddr,fork SYSTEM:"$q0 client $HOSTID ${PORT:-3632}" & - pids+=($!) fi # add the forwarded port @@ -176,14 +174,13 @@ parse_DISTCC_HOSTS() { esac done if $forward_ports; then - if [[ -z "${pids[*]}" ]]; then + if [[ $newport == 8000 ]]; then # listen on port 8000, but immediatly close, just so that we are # listening on something socat TCP-LISTEN:${newport},reuseaddr,fork SYSTEM:true & - pids+=($!) fi - trap "kill -- ${pids[*]}" EXIT - wait "${pids[@]}" + trap "jobs -p | xargs -r kill --" EXIT + wait else printf '%s\n' "${newhosts[*]}" fi @@ -225,7 +222,7 @@ odaemon() { umask 111 socat UNIX-LISTEN:"$chrootpath/socket",fork SYSTEM:"$q0 server" & - trap "kill -- $!; rm -f -- $(printf '%q' "$chrootpath/socket")" EXIT + trap "jobs -p | xargs -r kill --; rm -f -- $(printf '%q' "$chrootpath/socket")" EXIT wait } -- cgit v1.2.2