2
0
mirror of https://github.com/xcat2/xcat-core.git synced 2026-10-18 09:40:32 +00:00

fix(genesis): stop destiny requests cleanly

This commit is contained in:
Vinícius Ferrão
2026-08-20 22:39:46 -03:00
parent 1a8574397d
commit 6c534cb888
2 changed files with 40 additions and 10 deletions
+20 -5
View File
@@ -5,6 +5,7 @@ metadata_file=
metadata_temporary=
once=0
destination=${XCATDEST:-}
request_pid=
usage() {
printf '%s\n' 'Usage: getdestiny [ENDPOINT] [--metadata FILE] [--once]' >&2
@@ -51,10 +52,21 @@ cleanup() {
[[ -z $metadata_temporary ]] || rm -f -- "$metadata_temporary"
}
terminate() {
local status=$1
trap - HUP INT TERM
if [[ -n $request_pid ]]; then
kill -TERM "$request_pid" 2>/dev/null || true
wait "$request_pid" 2>/dev/null || true
fi
exit "$status"
}
trap cleanup EXIT
trap 'exit 129' HUP
trap 'exit 130' INT
trap 'exit 143' TERM
trap 'terminate 129' HUP
trap 'terminate 130' INT
trap 'terminate 143' TERM
printf '%s\n' \
'<xcatrequest>' \
@@ -66,11 +78,14 @@ request_destiny() {
if [[ -f /etc/xcat/cert.pem && -f /etc/xcat/certkey.pem ]]; then
openssl s_client -key /etc/xcat/certkey.pem \
-cert /etc/xcat/cert.pem -connect "$destination" -quiet \
2>/dev/null <"$request_file" >"$response_file"
2>/dev/null <"$request_file" >"$response_file" &
else
openssl s_client -connect "$destination" -quiet \
2>/dev/null <"$request_file" >"$response_file"
2>/dev/null <"$request_file" >"$response_file" &
fi
request_pid=$!
wait "$request_pid" || true
request_pid=
[[ -s $response_file ]] && ! grep -q '<error>' "$response_file" \
&& grep -q '<destiny>' "$response_file"
}
+20 -5
View File
@@ -5,6 +5,7 @@ metadata_file=
metadata_temporary=
once=0
destination=${XCATDEST:-}
request_pid=
usage() {
printf '%s\n' 'Usage: nextdestiny [ENDPOINT] [--metadata FILE] [--once]' >&2
@@ -51,10 +52,21 @@ cleanup() {
[[ -z $metadata_temporary ]] || rm -f -- "$metadata_temporary"
}
terminate() {
local status=$1
trap - HUP INT TERM
if [[ -n $request_pid ]]; then
kill -TERM "$request_pid" 2>/dev/null || true
wait "$request_pid" 2>/dev/null || true
fi
exit "$status"
}
trap cleanup EXIT
trap 'exit 129' HUP
trap 'exit 130' INT
trap 'exit 143' TERM
trap 'terminate 129' HUP
trap 'terminate 130' INT
trap 'terminate 143' TERM
printf '%s\n' \
'<xcatrequest>' \
@@ -66,11 +78,14 @@ request_destiny() {
if [[ -f /etc/xcat/cert.pem && -f /etc/xcat/certkey.pem ]]; then
openssl s_client -key /etc/xcat/certkey.pem \
-cert /etc/xcat/cert.pem -connect "$destination" -quiet \
2>/dev/null <"$request_file" >"$response_file"
2>/dev/null <"$request_file" >"$response_file" &
else
openssl s_client -connect "$destination" -quiet \
2>/dev/null <"$request_file" >"$response_file"
2>/dev/null <"$request_file" >"$response_file" &
fi
request_pid=$!
wait "$request_pid" || true
request_pid=
[[ -s $response_file ]]
}