firewall: fix firewall reload lock

This commit is contained in:
coolsnowwolf 2023-04-13 17:33:33 +08:00
parent a4426eb5a4
commit 8f42e0d971
2 changed files with 23 additions and 1 deletions

View File

@ -9,7 +9,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=firewall
PKG_RELEASE:=2
PKG_RELEASE:=3
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/firewall3.git

View File

@ -4,6 +4,17 @@ START=19
USE_PROCD=1
QUIET=""
LOCK_FILE="/var/lock/procd_firewall.lock"
set_lock() {
exec 1000>"$LOCK_FILE"
flock -xn 1000
}
unset_lock() {
flock -u 1000
rm -rf "$LOCK_FILE"
}
validate_firewall_redirect()
{
uci_validate_section firewall redirect "${1}" \
@ -30,28 +41,39 @@ validate_firewall_rule()
service_triggers() {
procd_add_reload_trigger firewall
set_lock
procd_open_validate
validate_firewall_redirect
validate_firewall_rule
procd_close_validate
unset_lock
}
restart() {
unset_lock
set_lock
fw3 restart
unset_lock
}
start_service() {
set_lock
fw3 ${QUIET} start
unset_lock
}
stop_service() {
fw3 flush
unset_lock
}
reload_service() {
unset_lock
set_lock
reload_config firewall
fw3 reload
unset_lock
}
boot() {