From: Hans Dedecker <dedeckeh@gmail.com>
Date: Sat, 29 Dec 2018 14:56:39 +0000 (+0100)
Subject: omcproxy: optimize interface triggers
X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=d405edb481bb08ee5db482142c65064902899bd3;p=openwrt%2Fstaging%2Fnbd.git

omcproxy: optimize interface triggers

Before installing an interface triggger check if an interface
trigger for the interface is already in place.
This avoids installing identical interface triggers for a given
interface

Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
---

diff --git a/package/network/services/omcproxy/Makefile b/package/network/services/omcproxy/Makefile
index 8f0c8b7d31..a02642284b 100644
--- a/package/network/services/omcproxy/Makefile
+++ b/package/network/services/omcproxy/Makefile
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=omcproxy
-PKG_RELEASE:=7
+PKG_RELEASE:=8
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/omcproxy.git
diff --git a/package/network/services/omcproxy/files/omcproxy.init b/package/network/services/omcproxy/files/omcproxy.init
index 30816e34fd..757b7794ef 100644
--- a/package/network/services/omcproxy/files/omcproxy.init
+++ b/package/network/services/omcproxy/files/omcproxy.init
@@ -51,7 +51,16 @@ omcproxy_add_network_triggers() {
 	config_get downlinks $1 downlink
 
 	for link in $uplink $downlinks; do
-		procd_add_interface_trigger "interface.*" $link /etc/init.d/omcproxy restart
+		local duplicate=0
+
+		for l in $LINKS; do
+			[ "$l" = "$link" ] && duplicate=1
+		done
+
+		[ "$duplicate" = 0 ] && {
+			LINKS="$LINKS $link"
+			procd_add_interface_trigger "interface.*" $link /etc/init.d/omcproxy restart
+		}
 	done
 }
 
@@ -114,6 +123,8 @@ omcproxy_add_firewall_rules() {
 }
 
 service_triggers() {
+	LINKS=""
+
 	procd_add_reload_trigger "omcproxy"
 	config_foreach omcproxy_add_network_triggers proxy
 }