Date: Fri, 23 Sep 2011 23:24:16 GMT From: Dmitry Fomin <fdn@okbire.ru> To: freebsd-gnats-submit@FreeBSD.org Subject: conf/160960: [patch] /etc/rc.d/named Message-ID: <201109232324.p8NNOGYx024431@red.freebsd.org> Resent-Message-ID: <201109232330.p8NNUBWB008146@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 160960 >Category: conf >Synopsis: [patch] /etc/rc.d/named >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Fri Sep 23 23:30:11 UTC 2011 >Closed-Date: >Last-Modified: >Originator: Dmitry Fomin >Release: FreeBSD 8.2-RELEASE-p2 >Organization: OKB IRE, Russia >Environment: FreeBSD f1.okbire.ru 8.2-RELEASE-p2 FreeBSD 8.2-RELEASE-p2 #0: Mon Sep 19 19:44: 44 UTC 2011 fnd@f1.okbire.ru:/usr/obj/usr/src/sys/F1 i386 >Description: If in a random way to commit an error in /var/named/etc/namedb/named.conf, at which 'named' doesn't start, or to commit an error in named_wait_host="local" (/etc/rc.conf), then /etc/rc.d/named will work infinitely, if named_wait="YES". The computer never to boot. To avoid such situation, I offer a patch. >How-To-Repeat: cat /etc/rc.conf .. named_enable="YES" .. named_wait="YES" named_wait_host="local" .. # /etc/rc.d/named start Starting named. Waiting for nameserver to resolve local Waiting for nameserver to resolve local Waiting for nameserver to resolve local Waiting for nameserver to resolve local Waiting for nameserver to resolve local .. >Fix: Patch attached with submission follows: --- /usr/src/etc/rc.d/named 2010-12-21 17:09:25.000000000 +0000 +++ /usr/src/etc/rc.d/named 2011-09-23 22:01:39.000000000 +0000 @@ -100,9 +100,22 @@ make_symlinks if checkyesno named_wait; then - until ${command%/sbin/named}/bin/host $named_wait_host >/dev/null 2>&1; do - echo " Waiting for nameserver to resolve $named_wait_host" + if [ ! -n "${named_wait_timeout}" ]; then + named_wait_timeout="${named_wait_timeout-10}" + fi + local timeout="${named_wait_timeout}" + until ${command%/sbin/named}/bin/host -W 1 $named_wait_host >/dev/null 2>&1; do + if [ $timeout -eq $named_wait_timeout ]; then + echo " Waiting for nameserver to resolve $named_wait_host" + echo "" + fi sleep 1 + timeout=$(($timeout - 1)) + echo -e "\033[A Remains to wait time - ${timeout} sec." + if [ $timeout -le 0 ]; then + echo " Wait time (${named_wait_timeout} sec.) has effused." + break + fi done fi } --- /usr/src/etc/defaults/rc.conf 2010-12-21 17:09:25.000000000 +0000 +++ /usr/src/etc/defaults/rc.conf 2011-09-23 18:43:44.000000000 +0000 @@ -279,6 +279,7 @@ named_symlink_enable="YES" # Symlink the chrooted pid file named_wait="NO" # Wait for working name service before exiting named_wait_host="localhost" # Hostname to check if named_wait is enabled +named_wait_timeout="10" # Timeout in seconds if named_wait is enabled named_auto_forward="NO" # Set up forwarders from /etc/resolv.conf named_auto_forward_only="NO" # Do "forward only" instead of "forward first" >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201109232324.p8NNOGYx024431>