Fix nullptr crash in OnEmbed
[chromium-blink-merge.git] / net / dns / mapped_host_resolver.cc
blobfedc05f0072eb3abb91265681e35f29256a7ec1b
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
3 // found in the LICENSE file.
5 #include "net/dns/mapped_host_resolver.h"
7 #include "base/strings/string_util.h"
8 #include "net/base/host_port_pair.h"
9 #include "net/base/net_errors.h"
10 #include "net/base/net_util.h"
12 namespace net {
14 MappedHostResolver::MappedHostResolver(scoped_ptr<HostResolver> impl)
15 : impl_(impl.Pass()) {
18 MappedHostResolver::~MappedHostResolver() {
21 int MappedHostResolver::Resolve(const RequestInfo& original_info,
22 RequestPriority priority,
23 AddressList* addresses,
24 const CompletionCallback& callback,
25 RequestHandle* out_req,
26 const BoundNetLog& net_log) {
27 RequestInfo info = original_info;
28 int rv = ApplyRules(&info);
29 if (rv != OK)
30 return rv;
32 return impl_->Resolve(info, priority, addresses, callback, out_req, net_log);
35 int MappedHostResolver::ResolveFromCache(const RequestInfo& original_info,
36 AddressList* addresses,
37 const BoundNetLog& net_log) {
38 RequestInfo info = original_info;
39 int rv = ApplyRules(&info);
40 if (rv != OK)
41 return rv;
43 return impl_->ResolveFromCache(info, addresses, net_log);
46 void MappedHostResolver::CancelRequest(RequestHandle req) {
47 impl_->CancelRequest(req);
50 void MappedHostResolver::SetDnsClientEnabled(bool enabled) {
51 impl_->SetDnsClientEnabled(enabled);
54 HostCache* MappedHostResolver::GetHostCache() {
55 return impl_->GetHostCache();
58 base::Value* MappedHostResolver::GetDnsConfigAsValue() const {
59 return impl_->GetDnsConfigAsValue();
62 int MappedHostResolver::ApplyRules(RequestInfo* info) const {
63 HostPortPair host_port(info->host_port_pair());
64 if (rules_.RewriteHost(&host_port)) {
65 if (host_port.host() == "~NOTFOUND")
66 return ERR_NAME_NOT_RESOLVED;
67 info->set_host_port_pair(host_port);
69 return OK;
72 } // namespace net