From: W.C.A. Wijngaards Date: Mon, 27 Jun 2016 12:09:54 +0000 (+0200) Subject: * Fix drill axfr ipv4/ipv6 queries. X-Git-Tag: release-1.7.0-rc1~67 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7a90e3398b6c9f9e82eedf3bfb6466357d6a5456;p=thirdparty%2Fldns.git * Fix drill axfr ipv4/ipv6 queries. --- diff --git a/Changelog b/Changelog index 25435d55..b9e3587b 100644 --- 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 e35492d1..bd0d826c 100644 --- 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,