Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/base/host_resolver_impl.h" | 5 #include "net/base/host_resolver_impl.h" |
| 6 | 6 |
| 7 #if defined(OS_WIN) | 7 #if defined(OS_WIN) |
| 8 #include <Winsock2.h> | 8 #include <Winsock2.h> |
| 9 #elif defined(OS_POSIX) | 9 #elif defined(OS_POSIX) |
| 10 #include <netdb.h> | 10 #include <netdb.h> |
| (...skipping 1415 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1426 | 1426 |
| 1427 net_log_.EndEventWithNetErrorCode(NetLog::TYPE_HOST_RESOLVER_IMPL_JOB, | 1427 net_log_.EndEventWithNetErrorCode(NetLog::TYPE_HOST_RESOLVER_IMPL_JOB, |
| 1428 net_error); | 1428 net_error); |
| 1429 | 1429 |
| 1430 DCHECK(!requests_.empty()); | 1430 DCHECK(!requests_.empty()); |
| 1431 | 1431 |
| 1432 if (net_error == OK) { | 1432 if (net_error == OK) { |
| 1433 SetPortOnAddressList(requests_->front()->info().port(), &list); | 1433 SetPortOnAddressList(requests_->front()->info().port(), &list); |
| 1434 // Record this histogram here, when we know the system has a valid DNS | 1434 // Record this histogram here, when we know the system has a valid DNS |
| 1435 // configuration. | 1435 // configuration. |
| 1436 UMA_HISTOGRAM_ENUMERATION("AsyncDNS.HaveDnsConfig", | 1436 UMA_HISTOGRAM_BOOLEAN("AsyncDNS.HaveDnsConfig", |
| 1437 resolver_->received_dns_config_ ? 1 : 0, | 1437 resolver_->received_dns_config_); |
| 1438 2); | |
| 1439 } | 1438 } |
| 1440 | 1439 |
| 1441 if ((net_error != ERR_ABORTED) && | 1440 if ((net_error != ERR_ABORTED) && |
| 1442 (net_error != ERR_HOST_RESOLVER_QUEUE_TOO_LARGE)) { | 1441 (net_error != ERR_HOST_RESOLVER_QUEUE_TOO_LARGE)) { |
| 1443 resolver_->CacheResult(key_, net_error, list, ttl); | 1442 resolver_->CacheResult(key_, net_error, list, ttl); |
| 1444 } | 1443 } |
| 1445 | 1444 |
| 1446 // Complete all of the requests that were attached to the job. | 1445 // Complete all of the requests that were attached to the job. |
| 1447 for (RequestsList::const_iterator it = requests_.begin(); | 1446 for (RequestsList::const_iterator it = requests_.begin(); |
| 1448 it != requests_.end(); ++it) { | 1447 it != requests_.end(); ++it) { |
| (...skipping 510 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1959 } | 1958 } |
| 1960 | 1959 |
| 1961 void HostResolverImpl::OnDnsConfigChanged(const DnsConfig& dns_config) { | 1960 void HostResolverImpl::OnDnsConfigChanged(const DnsConfig& dns_config) { |
| 1962 if (net_log_) { | 1961 if (net_log_) { |
| 1963 net_log_->AddGlobalEntry( | 1962 net_log_->AddGlobalEntry( |
| 1964 NetLog::TYPE_DNS_CONFIG_CHANGED, | 1963 NetLog::TYPE_DNS_CONFIG_CHANGED, |
| 1965 make_scoped_refptr(new DnsConfigParameters(dns_config))); | 1964 make_scoped_refptr(new DnsConfigParameters(dns_config))); |
| 1966 } | 1965 } |
| 1967 | 1966 |
| 1968 // TODO(szym): Remove once http://crbug.com/125599 is resolved. | 1967 // TODO(szym): Remove once http://crbug.com/125599 is resolved. |
| 1969 received_dns_config_ = dns_config.IsValid(); | 1968 received_dns_config_ = false; |
| 1969 if (dns_config.IsValid()) { | |
| 1970 // Quick check if the address is not INADDR_ANY, which is the default value | |
| 1971 // in absence of network connection. http://crbug.com/130808 | |
| 1972 if (dns_config.nameservers[0].address()[0]) { | |
|
mmenke
2012/06/01 22:20:27
Is it possible that we'd have INADDR_ANY, followed
| |
| 1973 received_dns_config_ = true; | |
| 1974 } | |
|
mmenke
2012/06/01 22:20:27
nit: No brackets for single-line ifs.
mmenke
2012/06/01 22:21:20
Actually, I'm never sure if that is optional or no
mmenke
2012/06/01 22:24:14
Ahh, chromium style guide:
Other formatting "rule
| |
| 1975 } | |
| 1970 | 1976 |
| 1971 // Life check to bail once |this| is deleted. | 1977 // Life check to bail once |this| is deleted. |
| 1972 base::WeakPtr<HostResolverImpl> self = AsWeakPtr(); | 1978 base::WeakPtr<HostResolverImpl> self = AsWeakPtr(); |
| 1973 | 1979 |
| 1974 if (dns_client_.get()) { | 1980 if (dns_client_.get()) { |
| 1975 // We want a new factory in place, before we Abort running Jobs, so that the | 1981 // We want a new factory in place, before we Abort running Jobs, so that the |
| 1976 // newly started jobs use the new factory. | 1982 // newly started jobs use the new factory. |
| 1977 dns_client_->SetConfig(dns_config); | 1983 dns_client_->SetConfig(dns_config); |
| 1978 OnDNSChanged(NetworkChangeNotifier::CHANGE_DNS_SETTINGS); | 1984 OnDNSChanged(NetworkChangeNotifier::CHANGE_DNS_SETTINGS); |
| 1979 // |this| may be deleted inside OnDNSChanged(). | 1985 // |this| may be deleted inside OnDNSChanged(). |
| 1980 if (self) | 1986 if (self) |
| 1981 TryServingAllJobsFromHosts(); | 1987 TryServingAllJobsFromHosts(); |
| 1982 } | 1988 } |
| 1983 } | 1989 } |
| 1984 | 1990 |
| 1985 bool HostResolverImpl::HaveDnsConfig() const { | 1991 bool HostResolverImpl::HaveDnsConfig() const { |
| 1986 return (dns_client_.get() != NULL) && (dns_client_->GetConfig() != NULL); | 1992 return (dns_client_.get() != NULL) && (dns_client_->GetConfig() != NULL); |
| 1987 } | 1993 } |
| 1988 | 1994 |
| 1989 } // namespace net | 1995 } // namespace net |
| OLD | NEW |