diff options
-rwxr-xr-x | src/chroot-tools/distcc-tool | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/src/chroot-tools/distcc-tool b/src/chroot-tools/distcc-tool index 5bb4f7b..7d9c283 100755 --- a/src/chroot-tools/distcc-tool +++ b/src/chroot-tools/distcc-tool @@ -24,6 +24,7 @@ # This program has very few dependencies: # - bash: 4.4 or newer (for @Q escaping) # - socat +# - sleep: must accept "infinity" # - cat: any version # - rm: any version # - sed: any version @@ -173,9 +174,7 @@ parse_DISTCC_HOSTS() { done if $forward_ports; 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 & + exec sleep infinity fi trap "jobs -p | xargs -r kill --" EXIT wait @@ -195,7 +194,7 @@ server() { [[ $# -eq 0 ]] || panic local host port read -r host port - socat STDIO TCP:"$host:$port" + exec socat STDIO TCP:"$host:$port" } # Usage: client HOST PORT @@ -204,8 +203,7 @@ server() { # socket. client() { [[ $# -eq 2 ]] || panic - local file=/socket - { printf '%s\n' "$*"; cat; } | socat UNIX-CONNECT:"$file" STDIO + { printf '%s\n' "$*"; exec cat; } | exec socat UNIX-CONNECT:'/socket' STDIO } ################################################################################ @@ -220,9 +218,7 @@ odaemon() { cd "$chrootpath" umask 111 - socat UNIX-LISTEN:"./socket",fork SYSTEM:"${0@Q} server" & - trap "jobs -p | xargs -r kill --; rm -f -- ./socket" EXIT - wait + exec socat UNIX-LISTEN:'./socket',fork SYSTEM:"${0@Q} server" } # Usage: idaemon DISTCC_HOSTS |