]> CyberLeo.Net >> Repos - FreeBSD/stable/8.git/commit
MFC r223667:
authorbz <bz@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Thu, 9 Feb 2012 07:52:45 +0000 (07:52 +0000)
committerbz <bz@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Thu, 9 Feb 2012 07:52:45 +0000 (07:52 +0000)
commit5e7dafab0ed98330b94fdf29a32d346c707c0c5f
treeabefc7746a82da7771b79ee1511fa3462f432dd5
parent3504933c92d6b61db4024fc36a1f7e10e0b57289
MFC r223667:

 In case ntp cannot resolve a hostname on startup it will queue the entry
 for resolving by a child process that, upon success, will add the entry
 to the config of the running running parent process.

 Unfortunately there are a couple of bugs with this, fixed in various
 later versions of upstream in potentially different ways due to other
 code changes:

 1) Upon server [-46] <FQDN> the [-46] are used as FQDN for later resolving
    which does not work.  Make sure we always pass the name (or IP there).

 2) The intermediate file to carry the information to the child process
    does not know about -4/-6 restrictions, so that a dual-stacked host
    could resolve to an IPv6 address but that might be unreachable (see
    r223626) leading to no working synchronization ignoring a IPv4 record.
    Thus alter the intermediate format to also pass the address family
    (AF_UNSPEC (default), AF_INET or AF_INET6) to the child process
    depending on -4 or -6.

 3) Make the child process to parse the new intermediate file format and
    save the address family for getaddrinfo() hints flags.

 4) Change child to always reload resolv.conf calling res_init() before
    trying to resolve names.  This will pick up resolv.conf changes or
    new resolv.confs should they have not existed or been empty or
    unusable on ntp startup.  This fix is more conditional in upstream
    versions but given FreeBSD has res_init there is no need for the
    configure logic as well.

 Approved by: roberto
 Sponsored by: Sandvine Incorporated

git-svn-id: svn://svn.freebsd.org/base/stable/8@231256 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
contrib/ntp/ntpd/ntp_config.c
contrib/ntp/ntpd/ntp_intres.c