From 8515efd6ee7aa4fbc8b64a9c1504332ac790780e Mon Sep 17 00:00:00 2001 From: JustArchi Date: Tue, 10 Oct 2017 03:49:24 +0200 Subject: [PATCH] Fix ASF not reacting to Docker SIGTERM This one is tricky, trap code works properly but bash is not reacting to it when executing a binary. > If Bash is waiting for a command to complete and receives a signal for which a trap has been set, the trap will not be executed until the command completes. https://www.gnu.org/software/bash/manual/html_node/Signals.html --- ArchiSteamFarm/scripts/generic/ArchiSteamFarm-Service.sh | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/ArchiSteamFarm/scripts/generic/ArchiSteamFarm-Service.sh b/ArchiSteamFarm/scripts/generic/ArchiSteamFarm-Service.sh index fe6ae2307..0f95dd13e 100755 --- a/ArchiSteamFarm/scripts/generic/ArchiSteamFarm-Service.sh +++ b/ArchiSteamFarm/scripts/generic/ArchiSteamFarm-Service.sh @@ -6,14 +6,13 @@ if [[ -z "${ASF_ARGS-}" ]]; then ASF_ARGS="" fi -for ARG in "$@"; do - ASF_ARGS+=" $ARG" -done +ASF_ARGS+=" $*" # Kill underlying ASF process on shell process exit trap "trap - SIGTERM && kill -- -$$" SIGINT SIGTERM EXIT while [[ -f ArchiSteamFarm.dll ]]; do - dotnet ArchiSteamFarm.dll $ASF_ARGS # We will abort the script if ASF exits with an error + dotnet ArchiSteamFarm.dll $ASF_ARGS & + wait $! # This will forward dotnet error code, set -e will abort the script if it's non-zero sleep 1 done