]> xenbits.xensource.com Git - people/julieng/freebsd.git/commitdiff
After starting Unbound, wait for up to five seconds until unbound-control
authordes <des@FreeBSD.org>
Mon, 19 Oct 2015 15:56:59 +0000 (15:56 +0000)
committerdes <des@FreeBSD.org>
Mon, 19 Oct 2015 15:56:59 +0000 (15:56 +0000)
indicates that it is up and running.

PR: 184047
MFC after: 3 weeks

etc/rc.d/local_unbound

index ce3256d2f3698bcd0db6c57ef719c144bb6f408c..4bb1a0c4dcd96e5224030dd8f78676d30c54ae48 100755 (executable)
@@ -17,6 +17,7 @@ rcvar="local_unbound_enable"
 command="/usr/sbin/unbound"
 extra_commands="anchor configtest reload setup"
 start_precmd="local_unbound_prestart"
+start_postcmd="local_unbound_poststart"
 reload_precmd="local_unbound_configtest"
 anchor_cmd="local_unbound_anchor"
 configtest_cmd="local_unbound_configtest"
@@ -90,5 +91,25 @@ local_unbound_prestart()
        fi
 }
 
+#
+# After starting, wait for Unbound to report that it is ready to avoid
+# race conditions with services which require functioning DNS.
+#
+local_unbound_poststart()
+{
+       local retry=5
+
+       echo -n "Waiting for nameserver to start..."
+       until "${command}-control" status | grep -q "is running" ; do
+               if [ $((retry -= 1)) -eq 0 ] ; then
+                       echo " giving up"
+                       return 1
+               fi
+               echo -n "."
+               sleep 1
+       done
+       echo " good"
+}
+
 load_rc_config $name
 run_rc_command "$1"