Index: net/base/net_util.cc |
diff --git a/net/base/net_util.cc b/net/base/net_util.cc |
index 028b56b74a8bb526b4e486bb1c328efda71005d4..97a7f854cb3933e2647127e49030bf04b5d853e5 100644 |
--- a/net/base/net_util.cc |
+++ b/net/base/net_util.cc |
@@ -730,10 +730,31 @@ int GetPortFromSockaddr(const struct sockaddr* address, socklen_t address_len) { |
return base::NetToHost16(*port_field); |
} |
+bool IsLocalhostHostname(const std::string& host, bool* isLocalhost6) { |
+ std::string lowercased_host = base::StringToLowerASCII(host); |
+ if (lowercased_host == "localhost6" || |
+ lowercased_host == "localhost6.localdomain6" || |
+ lowercased_host == "localhost6." || |
+ lowercased_host == "localhost6.localdomain6.") { |
+ *isLocalhost6 = true; |
+ return true; |
+ } |
+ |
+ if (lowercased_host == "localhost" || |
+ lowercased_host == "localhost.localdomain" || |
+ lowercased_host == "localhost." || |
+ lowercased_host == "localhost.localdomain." || |
+ IsLocalhostTLD(lowercased_host)) { |
+ *isLocalhost6 = false; |
+ return true; |
+ } |
+ |
+ return false; |
+} |
+ |
bool IsLocalhost(const std::string& host) { |
- if (host == "localhost" || host == "localhost.localdomain" || |
- host == "localhost6" || host == "localhost6.localdomain6" || |
- IsLocalhostTLD(host)) |
+ bool isIPv6; |
+ if (IsLocalhostHostname(host, &isIPv6)) |
return true; |
IPAddressNumber ip_number; |