naywatch: fix procd handling

Sometimes, naywatch can not handover the watchdog to procd again using
ubus. We need to call the same ubus command multiple times until procd
takes over control again.

Signed-off-by: Nick Hainke <vincent@systemli.org>
(cherry picked from commit e35255710b)
This commit is contained in:
Nick Hainke 2021-10-01 10:55:36 +02:00
parent c30b5d5df3
commit d8b4457267
1 changed files with 26 additions and 2 deletions

View File

@ -1,5 +1,7 @@
#!/bin/sh /etc/rc.common
. /usr/share/libubox/jshn.sh
USE_PROCD=1
START=95
STOP=01
@ -58,8 +60,30 @@ stop_service() {
sync && wait
}
watchdog_procd_runnig() {
watch=$(ubus call system watchdog)
json_load "$watch"
json_get_var watchdogstatus status
if [[ "$watchdogstatus" == "running" ]] ; then
echo "1"
return
fi
echo "0"
}
service_stopped() {
log "Naywatch Stopped!"
log "Handover Watchdog to procd again:"
ubus call system watchdog '{"magicclose":true,"stop":false}' > /dev/null
log "Try to handover watchdog to procd again."
for i in 1 2 3 4 5 6 7 8 9 10 ; do
sleep 5
ubus call system watchdog '{"stop":false}' > /dev/null
if [[ $(watchdog_procd_runnig) == "1" ]] ; then
break
fi
done
if [[ $(watchdog_procd_runnig) == "1" ]] ; then
log "Handover sucessfully!"
else
log "Handover to procd failed! Device can reboot!"
fi
}