aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Luehrsen <ericluehrsen@gmail.com>2020-09-05 10:00:32 -0400
committerEric Luehrsen <ericluehrsen@gmail.com>2020-09-05 10:04:48 -0400
commitb97cdaf612e1c59277d50d061461b7c206e010ba (patch)
tree01cdd63b33539e99a6291017a9043192b1158b56
parentd701768ce4dbdc8371151cca00586a9c63c66570 (diff)
unbound: improve odhcpd rapid update robustness
Signed-off-by: Eric Luehrsen <ericluehrsen@gmail.com>
-rw-r--r--net/unbound/Makefile2
-rw-r--r--net/unbound/files/odhcpd.sh27
2 files changed, 21 insertions, 8 deletions
diff --git a/net/unbound/Makefile b/net/unbound/Makefile
index ff796e784..06ceeb373 100644
--- a/net/unbound/Makefile
+++ b/net/unbound/Makefile
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=unbound
PKG_VERSION:=1.11.0
-PKG_RELEASE:=3
+PKG_RELEASE:=4
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://nlnetlabs.nl/downloads/unbound
diff --git a/net/unbound/files/odhcpd.sh b/net/unbound/files/odhcpd.sh
index e4d4e318f..d8390c870 100644
--- a/net/unbound/files/odhcpd.sh
+++ b/net/unbound/files/odhcpd.sh
@@ -23,12 +23,10 @@
#
##############################################################################
-. /lib/functions.sh
-. /usr/lib/unbound/defaults.sh
-
-##############################################################################
-
odhcpd_zonedata() {
+ . /lib/functions.sh
+ . /usr/lib/unbound/defaults.sh
+
local dhcp_link=$( uci_get unbound.@unbound[0].dhcp_link )
local dhcp4_slaac6=$( uci_get unbound.@unbound[0].dhcp4_slaac6 )
local dhcp_domain=$( uci_get unbound.@unbound[0].domain )
@@ -62,7 +60,7 @@ odhcpd_zonedata() {
sort $dhcp_origin > $dhcp_ls_new
longconf=longtime
- elif [ $dateoldf -gt 3 ] ; then
+ elif [ $dateoldf -gt 1 ] ; then
touch $dns_ls_old
sort $dhcp_origin > $dhcp_ls_new
longconf=increment
@@ -124,7 +122,22 @@ odhcpd_zonedata() {
##############################################################################
-odhcpd_zonedata
+UB_ODHPCD_LOCK=/tmp/unbound_odhcpd.lock
+
+if [ ! -f $UB_ODHPCD_LOCK ] ; then
+ # imperfect but it should avoid collisions
+ touch $UB_ODHPCD_LOCK
+ odhcpd_zonedata
+ rm -f $UB_ODHPCD_LOCK
+
+else
+ UB_ODHCPD_LOCK_AGE=$(( $( date +%s ) - $( date -r $UB_ODHPCD_LOCK +%s ) ))
+
+ if [ $UB_ODHCPD_LOCK_AGE -gt 100 ] ; then
+ # unlock because something likely broke but do not write this time through
+ rm -f $UB_ODHPCD_LOCK
+ fi
+fi
##############################################################################