]> git.ipfire.org Git - thirdparty/ldns.git/commitdiff
* Fix drill axfr ipv4/ipv6 queries.
authorW.C.A. Wijngaards <wouter@nlnetlabs.nl>
Mon, 27 Jun 2016 12:09:54 +0000 (14:09 +0200)
committerW.C.A. Wijngaards <wouter@nlnetlabs.nl>
Mon, 27 Jun 2016 12:09:54 +0000 (14:09 +0200)
Changelog
net.c

index 25435d558430dfe6a705131beb78f1789aaa5f66..b9e3587b379cac0e178534e465b77e4e4638bc01 100644 (file)
--- a/Changelog
+++ b/Changelog
@@ -68,6 +68,7 @@ TBD
          The dns algorithm number is not yet allocated. These features are
          not fully implemented yet.
        * Fix _answerfrom comment in ldns_struct_pkt.
+       * Fix drill axfr ipv4/ipv6 queries.
 
 1.6.17 2014-01-10
        * Fix ldns_dnssec_zone_new_frm_fp_l to allow the last parsed line of a
diff --git a/net.c b/net.c
index e35492d1c125402c1fadbfd28cd078f3edbffb7a..bd0d826c5f6ce5f2099f406f07f3661da4c1988b 100644 (file)
--- a/net.c
+++ b/net.c
@@ -900,6 +900,21 @@ ldns_axfr_start(ldns_resolver *resolver, const ldns_rdf *domain, ldns_rr_class c
                ns = ldns_rdf2native_sockaddr_storage(
                        resolver->_nameservers[ns_i],
                        ldns_resolver_port(resolver), &ns_len);
+#ifndef S_SPLINT_S
+               if ((ns->ss_family == AF_INET) &&
+                               (ldns_resolver_ip6(resolver) == LDNS_RESOLV_INET6)) {
+                       /* not reachable */
+                       LDNS_FREE(ns);
+                       continue;
+               }
+
+               if ((ns->ss_family == AF_INET6) &&
+                                (ldns_resolver_ip6(resolver) == LDNS_RESOLV_INET)) {
+                       /* not reachable */
+                       LDNS_FREE(ns);
+                       continue;
+               }
+#endif
 
                resolver->_socket = ldns_tcp_connect_from(
                                ns, (socklen_t)ns_len,