Index: net/dns/host_resolver_impl.cc |
diff --git a/net/dns/host_resolver_impl.cc b/net/dns/host_resolver_impl.cc |
index d5602a4c674cad2848bb9d28cc77b0ad85d5333f..ac1a9c9856f237234fc500974f2ba8294f48ee08 100644 |
--- a/net/dns/host_resolver_impl.cc |
+++ b/net/dns/host_resolver_impl.cc |
@@ -35,6 +35,7 @@ |
#include "net/base/dns_reloader.h" |
#include "net/base/dns_util.h" |
#include "net/base/host_port_pair.h" |
+#include "net/base/ip_endpoint.h" |
#include "net/base/net_errors.h" |
#include "net/base/net_log.h" |
#include "net/base/net_util.h" |
@@ -182,7 +183,7 @@ bool IsGloballyReachable(const IPAddressNumber& dest, |
rv = socket->GetLocalAddress(&endpoint); |
if (rv != OK) |
return false; |
- DCHECK(endpoint.GetFamily() == ADDRESS_FAMILY_IPV6); |
+ DCHECK_EQ(ADDRESS_FAMILY_IPV6, endpoint.GetFamily()); |
const IPAddressNumber& address = endpoint.address(); |
bool is_link_local = (address[0] == 0xFE) && ((address[1] & 0xC0) == 0x80); |
if (is_link_local) |
@@ -2032,10 +2033,18 @@ bool HostResolverImpl::ResolveAsIP(const Key& key, |
~(HOST_RESOLVER_CANONNAME | HOST_RESOLVER_LOOPBACK_ONLY | |
HOST_RESOLVER_DEFAULT_FAMILY_SET_DUE_TO_NO_IPV6), |
0) << " Unhandled flag"; |
- bool ipv6_disabled = (default_address_family_ == ADDRESS_FAMILY_IPV4) && |
- !probe_ipv6_support_; |
+ |
*net_error = OK; |
- if ((ip_number.size() == kIPv6AddressSize) && ipv6_disabled) { |
+ AddressFamily family = GetAddressFamily(ip_number); |
+ if (family == ADDRESS_FAMILY_IPV6 && |
+ default_address_family_ == ADDRESS_FAMILY_IPV4 && |
+ !probe_ipv6_support_) { |
+ // Don't return IPv6 addresses if default address family is not set to IPv4, |
Deprecated (see juliatuttle)
2014/08/04 20:32:20
This comment doesn't read right to me.
"Don't ret
mmenke
2014/08/05 22:50:38
Done.
|
+ // or probes are enabled. |
+ *net_error = ERR_NAME_NOT_RESOLVED; |
+ } else if (key.address_family != ADDRESS_FAMILY_UNSPECIFIED && |
+ key.address_family != family) { |
+ // Don't return IPv6 addresses for IPv4 queries, and vice versa. |
*net_error = ERR_NAME_NOT_RESOLVED; |
} else { |
*addresses = AddressList::CreateFromIPAddress(ip_number, info.port()); |