]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
2514. [bug] dig/host failed with -4 or -6 when resolv.conf contains
authorTatuya JINMEI 神明達哉 <jinmei@isc.org>
Sat, 13 Dec 2008 02:43:25 +0000 (02:43 +0000)
committerTatuya JINMEI 神明達哉 <jinmei@isc.org>
Sat, 13 Dec 2008 02:43:25 +0000 (02:43 +0000)
a nameserver of the unsupported address family.
[RT #18848]

CHANGES
bin/dig/dighost.c

diff --git a/CHANGES b/CHANGES
index 27700e4c6ce9ce19b793de194478a2d891cca6ae..b97e24b0c5beabb4482acb9dd6c9586304b5e5fa 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,4 +1,8 @@
-2513   [bug]           Fix windows cli build. [RT #19062]
+2514.  [bug]           dig/host failed with -4 or -6 when resolv.conf contains
+                       a nameserver of the unsupported address family.
+                       [RT #18848]
+
+2513.  [bug]           Fix windows cli build. [RT #19062]
 
 2512.  [func]          Print a summary of the cached records which make up
                        the negative response.  [RT #18885]
index d61d2c245e691072a84ca6125df074f8257ed90a..d35f98e359700019ba4f26a1f081600c7ab0310e 100644 (file)
@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: dighost.c,v 1.312 2008/12/10 22:33:54 marka Exp $ */
+/* $Id: dighost.c,v 1.313 2008/12/13 02:43:25 jinmei Exp $ */
 
 /*! \file
  *  \note
@@ -583,6 +583,11 @@ copy_server_list(lwres_conf_t *confdata, dig_serverlist_t *dest) {
        for (i = 0; i < confdata->nsnext; i++) {
                af = addr2af(confdata->nameservers[i].family);
 
+               if (af == AF_INET && !have_ipv4)
+                       continue;
+               if (af == AF_INET6 && !have_ipv6)
+                       continue;
+
                lwres_net_ntop(af, confdata->nameservers[i].address,
                                   tmp, sizeof(tmp));
                newsrv = make_server(tmp, tmp);
@@ -1035,8 +1040,10 @@ setup_system(void) {
                debug("ndots is %d.", ndots);
        }
 
+       copy_server_list(lwconf, &server_list);
+
        /* If we don't find a nameserver fall back to localhost */
-       if (lwconf->nsnext == 0) {
+       if (ISC_LIST_EMPTY(server_list)) {
                if (have_ipv4) {
                        lwresult = add_nameserver(lwconf, "127.0.0.1", AF_INET);
                        if (lwresult != ISC_R_SUCCESS)
@@ -1047,10 +1054,9 @@ setup_system(void) {
                        if (lwresult != ISC_R_SUCCESS)
                                fatal("add_nameserver failed");
                }
-       }
 
-       if (ISC_LIST_EMPTY(server_list))
                copy_server_list(lwconf, &server_list);
+       }
 
 #ifdef WITH_IDN
        initialize_idn();