From bd6342e3b529a1bdecf3a8fe09db1a22c9810b95 Mon Sep 17 00:00:00 2001 From: "Fiona Klute (WIWA)" Date: Mon, 31 Mar 2025 19:12:12 +0200 Subject: [PATCH] package/mosquitto: fix init script Restart would regularly fail because it did not wait for the old process to be gone before starting the new one. Rewrite the script according to current style to fix that, and add reload support (see mosquitto docs for limitations of reload). Signed-off-by: Fiona Klute (WIWA) Signed-off-by: Thomas Petazzoni (cherry picked from commit 340a4bd4f80f71c975f10bee575e8e7cb93131b9) Signed-off-by: Thomas Perale --- .checkpackageignore | 1 - package/mosquitto/S50mosquitto | 79 +++++++++++++++++++++++++--------- 2 files changed, 59 insertions(+), 21 deletions(-) diff --git a/.checkpackageignore b/.checkpackageignore index b2951fdfbb..0ff4d78ec1 100644 --- a/.checkpackageignore +++ b/.checkpackageignore @@ -826,7 +826,6 @@ package/mono-gtksharp3/0001-Fixes-MONO_PROFILE_ENTER_LEAVE-undeclared.patch lib_ package/mono-gtksharp3/0002-Mono-compilation-error-branch.patch lib_patch.Upstream package/mono/0001-Fix-linkage-with-a-system-libatomic_ops-shared-library.patch lib_patch.Upstream package/mono/0002-Ongoing-work-on-the-cmake-build.patch lib_patch.Upstream -package/mosquitto/S50mosquitto Shellcheck lib_sysv.Indent lib_sysv.Variables package/motion/S99motion Shellcheck lib_sysv.Indent lib_sysv.Variables package/mpir/0001-mpn-arm-udiv.asm-workaround-binutils-bug-14887.patch lib_patch.Upstream package/mpv/0001-fix-powerpc64-altivec.patch lib_patch.Upstream diff --git a/package/mosquitto/S50mosquitto b/package/mosquitto/S50mosquitto index 5241a071d7..89989179c1 100644 --- a/package/mosquitto/S50mosquitto +++ b/package/mosquitto/S50mosquitto @@ -1,35 +1,74 @@ #!/bin/sh +DAEMON="mosquitto" +PIDFILE="/var/run/$DAEMON.pid" +MOSQUITTO_CONF="/etc/mosquitto/mosquitto.conf" + +[ -f "$MOSQUITTO_CONF" ] || exit 0 + start() { - printf "Starting mosquitto: " - start-stop-daemon -S -q -m -b -p /var/run/mosquitto.pid \ - --exec /usr/sbin/mosquitto \ - -- -c /etc/mosquitto/mosquitto.conf - [ $? = 0 ] && echo "OK" || echo "FAIL" + printf "Starting %s: " "$DAEMON" + start-stop-daemon --start --background --make-pidfile \ + --pidfile "$PIDFILE" --exec "/usr/sbin/$DAEMON" \ + -- -c "$MOSQUITTO_CONF" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" } + stop() { - printf "Stopping mosquitto: " - start-stop-daemon -K -q -p /var/run/mosquitto.pid - [ $? = 0 ] && echo "OK" || echo "FAIL" + printf "Stopping %s: " "$DAEMON" + start-stop-daemon --stop --pidfile "$PIDFILE" \ + --exec "/usr/sbin/$DAEMON" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + return "$status" + fi + while start-stop-daemon --stop --test --quiet --pidfile "$PIDFILE" \ + --exec "/usr/sbin/$DAEMON"; do + sleep 0.1 + done + rm -f "$PIDFILE" + return "$status" } + restart() { stop start } +reload() { + printf "Reloading %s config: " "$DAEMON" + start-stop-daemon --stop --signal HUP -q --pidfile "$PIDFILE" \ + --exec "/usr/sbin/$DAEMON" + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + case "$1" in - start) - start - ;; - stop) - stop - ;; - restart|reload) - restart - ;; - *) - echo "Usage: $0 {start|stop|restart}" - exit 1 + start) + start;; + stop) + stop;; + restart) + restart;; + reload) + reload;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 esac exit $?