unbound: improve odhcpd rapid update robustness 13309/head
authorEric Luehrsen <ericluehrsen@gmail.com>
Sat, 5 Sep 2020 14:00:32 +0000 (10:00 -0400)
committerEric Luehrsen <ericluehrsen@gmail.com>
Sat, 5 Sep 2020 14:04:48 +0000 (10:04 -0400)
Signed-off-by: Eric Luehrsen <ericluehrsen@gmail.com>
net/unbound/Makefile
net/unbound/files/odhcpd.sh

index ff796e784b1f5102b3ca0eb57e75f1fc39d142e1..06ceeb3731db1ee0c4a1612d8687706b9e8e2115 100644 (file)
@@ -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
index e4d4e318f851640981acf135d8261ec32b89832a..d8390c8704b87ed05e900436f3a1fbe276170296 100644 (file)
 #
 ##############################################################################
 
-. /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
 
 ##############################################################################