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/base/mapped_host_resolver.h"
7 #include "base/string_tokenizer.h"
8 #include "base/string_util.h"
9 #include "net/base/host_port_pair.h"
10 #include "net/base/net_errors.h"
11 #include "net/base/net_util.h"
15 MappedHostResolver::MappedHostResolver(scoped_ptr
<HostResolver
> impl
)
16 : impl_(impl
.Pass()) {
19 MappedHostResolver::~MappedHostResolver() {
22 int MappedHostResolver::Resolve(const RequestInfo
& info
,
23 AddressList
* addresses
,
24 const CompletionCallback
& callback
,
25 RequestHandle
* out_req
,
26 const BoundNetLog
& net_log
) {
27 return impl_
->Resolve(ApplyRules(info
), addresses
, callback
, out_req
,
31 int MappedHostResolver::ResolveFromCache(const RequestInfo
& info
,
32 AddressList
* addresses
,
33 const BoundNetLog
& net_log
) {
34 return impl_
->ResolveFromCache(ApplyRules(info
), addresses
, net_log
);
37 void MappedHostResolver::CancelRequest(RequestHandle req
) {
38 impl_
->CancelRequest(req
);
41 void MappedHostResolver::ProbeIPv6Support() {
42 impl_
->ProbeIPv6Support();
45 HostCache
* MappedHostResolver::GetHostCache() {
46 return impl_
->GetHostCache();
49 HostResolver::RequestInfo
MappedHostResolver::ApplyRules(
50 const RequestInfo
& info
) const {
51 RequestInfo modified_info
= info
;
52 HostPortPair
host_port(info
.host_port_pair());
53 if (rules_
.RewriteHost(&host_port
))
54 modified_info
.set_host_port_pair(host_port
);