From owner-freebsd-bugs@FreeBSD.ORG Fri Sep 23 23:30:12 2011 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3BEA61065674 for ; Fri, 23 Sep 2011 23:30:12 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 0C9298FC18 for ; Fri, 23 Sep 2011 23:30:12 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.4/8.14.4) with ESMTP id p8NNUBSl008149 for ; Fri, 23 Sep 2011 23:30:11 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.4/8.14.4/Submit) id p8NNUBWB008146; Fri, 23 Sep 2011 23:30:11 GMT (envelope-from gnats) Resent-Date: Fri, 23 Sep 2011 23:30:11 GMT Resent-Message-Id: <201109232330.p8NNUBWB008146@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Dmitry Fomin Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BA748106566B for ; Fri, 23 Sep 2011 23:24:17 +0000 (UTC) (envelope-from nobody@FreeBSD.org) Received: from red.freebsd.org (red.freebsd.org [IPv6:2001:4f8:fff6::22]) by mx1.freebsd.org (Postfix) with ESMTP id 91A468FC08 for ; Fri, 23 Sep 2011 23:24:17 +0000 (UTC) Received: from red.freebsd.org (localhost [127.0.0.1]) by red.freebsd.org (8.14.4/8.14.4) with ESMTP id p8NNOGcD024451 for ; Fri, 23 Sep 2011 23:24:16 GMT (envelope-from nobody@red.freebsd.org) Received: (from nobody@localhost) by red.freebsd.org (8.14.4/8.14.4/Submit) id p8NNOGYx024431; Fri, 23 Sep 2011 23:24:16 GMT (envelope-from nobody) Message-Id: <201109232324.p8NNOGYx024431@red.freebsd.org> Date: Fri, 23 Sep 2011 23:24:16 GMT From: Dmitry Fomin To: freebsd-gnats-submit@FreeBSD.org X-Send-Pr-Version: www-3.1 Cc: Subject: conf/160960: [patch] /etc/rc.d/named X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 23 Sep 2011 23:30:12 -0000 >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: