diff --git a/mote/v2/openwrt/package/luci/libs/uci/root/sbin/luci-reload b/mote/v2/openwrt/package/luci/libs/uci/root/sbin/luci-reload index b6b1ff6..24cf760 100755 --- a/mote/v2/openwrt/package/luci/libs/uci/root/sbin/luci-reload +++ b/mote/v2/openwrt/package/luci/libs/uci/root/sbin/luci-reload @@ -5,7 +5,9 @@ apply_config() { config_get init "$1" init config_get exec "$1" exec config_get test "$1" test - + + echo "$2" > "/var/run/luci-reload-status" + [ -n "$init" ] && reload_init "$2" "$init" "$test" [ -n "$exec" ] && reload_exec "$2" "$exec" "$test" } @@ -26,9 +28,13 @@ reload_init() { } } +lock "/var/run/luci-reload" + config_load ucitrack -for i in $* -do +for i in $*; do config_foreach apply_config $i $i done + +rm -f "/var/run/luci-reload-status" +lock -u "/var/run/luci-reload" diff --git a/mote/v2/openwrt/package/luci/patches/200-prevent_concurrent_luci_reload_instances.patch b/mote/v2/openwrt/package/luci/patches/200-prevent_concurrent_luci_reload_instances.patch new file mode 100644 index 0000000..e71f279 --- /dev/null +++ b/mote/v2/openwrt/package/luci/patches/200-prevent_concurrent_luci_reload_instances.patch @@ -0,0 +1,26 @@ +--- a/libs/uci/root/sbin/luci-reload (revision 3404) ++++ b/libs/uci/root/sbin/luci-reload (revision 6271) +@@ -6,5 +6,7 @@ + config_get exec "$1" exec + config_get test "$1" test +- ++ ++ echo "$2" > "/var/run/luci-reload-status" ++ + [ -n "$init" ] && reload_init "$2" "$init" "$test" + [ -n "$exec" ] && reload_exec "$2" "$exec" "$test" +@@ -27,8 +29,12 @@ + } + ++lock "/var/run/luci-reload" ++ + config_load ucitrack + +-for i in $* +-do ++for i in $*; do + config_foreach apply_config $i $i + done ++ ++rm -f "/var/run/luci-reload-status" ++lock -u "/var/run/luci-reload"