firewall: fix firewall reload lock (#41)

This commit is contained in:
gngpp 2023-04-13 18:12:52 +08:00 committed by GitHub
parent fe7a87ec25
commit e78f102c7a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 23 additions and 1 deletions

View File

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

View File

@ -4,6 +4,17 @@ START=19
USE_PROCD=1 USE_PROCD=1
QUIET="" 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() validate_firewall_redirect()
{ {
uci_validate_section firewall redirect "${1}" \ uci_validate_section firewall redirect "${1}" \
@ -30,28 +41,39 @@ validate_firewall_rule()
service_triggers() { service_triggers() {
procd_add_reload_trigger firewall procd_add_reload_trigger firewall
set_lock
procd_open_validate procd_open_validate
validate_firewall_redirect validate_firewall_redirect
validate_firewall_rule validate_firewall_rule
procd_close_validate procd_close_validate
unset_lock
} }
restart() { restart() {
unset_lock
set_lock
fw3 restart fw3 restart
unset_lock
} }
start_service() { start_service() {
set_lock
fw3 ${QUIET} start fw3 ${QUIET} start
unset_lock
} }
stop_service() { stop_service() {
fw3 flush fw3 flush
unset_lock
} }
reload_service() { reload_service() {
unset_lock
set_lock
reload_config firewall reload_config firewall
fw3 reload fw3 reload
unset_lock
} }
boot() { boot() {