summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsrc/chroot-tools/distcc-tool14
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