fix: Add cleanup for failed web server startup (#1333)

This commit is contained in:
Kroese
2026-07-25 13:47:20 +02:00
committed by GitHub
parent afd848cebb
commit 63e4529eff
+53 -11
View File
@@ -15,7 +15,7 @@ WSD_PID="$QEMU_DIR/websocketd.pid"
prepareWebFiles() {
cp -r /var/www/* "$QEMU_DIR" || return 1
rm -f "$WSD_PID" "$WEB_PID" "$WSD_LOG" || return 1
rm -f -- "$WSD_PID" "$WEB_PID" "$WSD_LOG" || return 1
return 0
}
@@ -60,6 +60,22 @@ configureWebServer() {
return 0
}
stopWebServer() {
local pid
if [ -s "$WEB_PID" ] && read -r pid < "$WEB_PID" && [ -n "$pid" ]; then
pKill "$pid" 2
if isAlive "$pid"; then
kill -9 -- "$pid" 2>/dev/null || :
fi
fi
rm -f -- "$WEB_PID"
return 0
}
startWebServer() {
# Start webserver
@@ -68,6 +84,22 @@ startWebServer() {
return 0
}
stopWebsocketServer() {
local pid
if [ -s "$WSD_PID" ] && read -r pid < "$WSD_PID" && [ -n "$pid" ]; then
pKill "$pid" 2
if isAlive "$pid"; then
kill -9 -- "$pid" 2>/dev/null || :
fi
fi
rm -f -- "$WSD_PID"
return 0
}
startWebsocketServer() {
# Start websocket server
@@ -81,17 +113,23 @@ startWebsocketServer() {
if ! echo "$pid" > "$WSD_PID"; then
kill "$pid" 2>/dev/null || :
rm -f -- "$WSD_PID"
return 1
fi
sleep 0.1
local i
for (( i = 1; i <= 5; i++ )); do
if ! isAlive "$pid"; then
rm -f "$WSD_PID"
[ -s "$WSD_LOG" ] && cat "$WSD_LOG" >&2
error "Failed to start websocket server!"
return 1
fi
if ! isAlive "$pid"; then
rm -f -- "$WSD_PID"
[ -s "$WSD_LOG" ] && cat "$WSD_LOG" >&2
error "Failed to start websocket server!"
return 1
fi
sleep 0.1
done
return 0
}
@@ -104,7 +142,11 @@ disabled "${WEB:-}" && return 0
configureWebServer
startWebServer
startWebsocketServer
if startWebServer && startWebsocketServer; then
return 0
fi
return 0
stopWebsocketServer || :
stopWebServer || :
return 1