Chromium Code Reviews| Index: net/dns/dns_transaction.cc |
| diff --git a/net/dns/dns_transaction.cc b/net/dns/dns_transaction.cc |
| index beb2197dd55b7bc50d39c71cb70d46c29bfd2a77..73a2c40e4b41864f4ef7c43ab064f9708fbb2e4f 100644 |
| --- a/net/dns/dns_transaction.cc |
| +++ b/net/dns/dns_transaction.cc |
| @@ -28,6 +28,7 @@ |
| #include "net/base/ip_endpoint.h" |
| #include "net/base/net_errors.h" |
| #include "net/base/net_log.h" |
| +#include "net/base/net_util.h" |
| #include "net/dns/dns_protocol.h" |
| #include "net/dns/dns_query.h" |
| #include "net/dns/dns_response.h" |
| @@ -616,12 +617,16 @@ class DnsTransactionImpl : public DnsTransaction, |
| // Prepares |qnames_| according to the DnsConfig. |
| int PrepareSearch() { |
| const DnsConfig& config = session_->config(); |
| + // Redirect .localhost queries to localhost to make sure that they are |
|
Deprecated (see juliatuttle)
2015/02/24 16:39:23
Nit: "to localhost.", since you're including the t
estark
2015/02/26 07:58:53
fixed in the place where this comment has been rel
|
| + // never sent out on the network, per RFC 6761. |
| + const std::string hostname = |
| + (IsLocalhostTLD(hostname_) ? "localhost." : hostname_); |
| std::string labeled_hostname; |
| - if (!DNSDomainFromDot(hostname_, &labeled_hostname)) |
| + if (!DNSDomainFromDot(hostname, &labeled_hostname)) |
| return ERR_INVALID_ARGUMENT; |
| - if (hostname_[hostname_.size() - 1] == '.') { |
| + if (hostname[hostname.size() - 1] == '.') { |
| // It's a fully-qualified name, no suffix search. |
| qnames_.push_back(labeled_hostname); |
| return OK; |
| @@ -645,7 +650,7 @@ class DnsTransactionImpl : public DnsTransaction, |
| std::string qname; |
| for (size_t i = 0; i < config.search.size(); ++i) { |
| // Ignore invalid (too long) combinations. |
| - if (!DNSDomainFromDot(hostname_ + "." + config.search[i], &qname)) |
| + if (!DNSDomainFromDot(hostname + "." + config.search[i], &qname)) |
| continue; |
| if (qname.size() == labeled_hostname.size()) { |
| if (had_hostname) |