From e4130541897047fad36a75e4de4dc609177df8b7 Mon Sep 17 00:00:00 2001 From: Patrick McDermott Date: Thu, 25 Jun 2020 19:01:59 -0400 Subject: session: Don't exit on signal Return to caller to allow for more cleanup. --- (limited to 'src') diff --git a/src/session.sh b/src/session.sh index 32400ce..c4a9b08 100644 --- a/src/session.sh +++ b/src/session.sh @@ -25,6 +25,7 @@ session_plat= session_mountdir= session_atexit= session_sigs= +_session_es= _session_mount() { @@ -66,6 +67,11 @@ _session_umount() session_end() { + if [ ! -d "${session_root}/prokit/sessions/${session_id}" ]; then + # Session already ended by signal. No need for further cleanup. + return 0 + fi + trap : ${session_sigs} ${session_atexit} @@ -106,7 +112,7 @@ _session_handle_sig() session_end - exit $((128 + ${sig})) + _session_es=$((128 + ${sig})) } _session_set_sigs() @@ -207,6 +213,8 @@ session_exec() local args= local session_dir= + _session_es=0 + args='' for arg in "${@}"; do arg="'$(printf '%s\n' "${arg}" | sed "s/'/'\\\\''/g")'" @@ -216,5 +224,5 @@ session_exec() chroot "${session_root}" /bin/sh -c "cd ${session_dir}; ${args}" || \ return ${?} - return 0 + return ${_session_es} } -- cgit v0.9.1