Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(342)

Side by Side Diff: net/base/mock_host_resolver.cc

Issue 3115014: Revert 56384 - Don't resolve IP literals.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « net/base/host_resolver_impl_unittest.cc ('k') | net/socket/ssl_client_socket_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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/mock_host_resolver.h" 5 #include "net/base/mock_host_resolver.h"
6 6
7 #include "base/string_util.h" 7 #include "base/string_util.h"
8 #include "base/platform_thread.h" 8 #include "base/platform_thread.h"
9 #include "base/ref_counted.h" 9 #include "base/ref_counted.h"
10 #include "net/base/net_errors.h" 10 #include "net/base/net_errors.h"
11 #include "net/base/net_util.h" 11 #include "net/base/net_util.h"
12 #include "net/base/sys_addrinfo.h"
13 12
14 namespace net { 13 namespace net {
15 14
16 namespace { 15 namespace {
17 16
18 // Fills |*addrlist| with a socket address for |host| which should be an 17 // Fills |*addrlist| with a socket address for |host| which should be an
19 // IPv4 or IPv6 literal without enclosing brackets. If |canonical_name| is 18 // IPv4 or IPv6 literal without enclosing brackets. If |canonical_name| is
20 // non-empty it is used as the DNS canonical name for the host. Returns OK on 19 // non-empty it is used as the DNS canonical name for the host. Returns OK on
21 // success, ERR_UNEXPECTED otherwise. 20 // success, ERR_UNEXPECTED otherwise.
22 int CreateIPAddress(const std::string& host, 21 int CreateIPAddress(const std::string& host,
23 const std::string& canonical_name, 22 const std::string& canonical_name,
24 AddressList* addrlist) { 23 AddressList* addrlist) {
25 IPAddressNumber ip_number; 24 IPAddressNumber ip_number;
26 if (!ParseIPLiteralToNumber(host, &ip_number)) { 25 if (!ParseIPLiteralToNumber(host, &ip_number)) {
27 LOG(WARNING) << "Not a supported IP literal: " << host; 26 LOG(WARNING) << "Not a supported IP literal: " << host;
28 return ERR_UNEXPECTED; 27 return ERR_UNEXPECTED;
29 } 28 }
30 29
31 AddressList result(ip_number, -1, false); 30 if (ip_number.size() == 4) {
32 struct addrinfo* ai = const_cast<struct addrinfo*>(result.head()); 31 *addrlist = AddressList::CreateIPv4Address(&ip_number[0], canonical_name);
33 ai->ai_canonname = strdup(canonical_name.c_str()); 32 } else if (ip_number.size() == 16) {
34 *addrlist = result; 33 *addrlist = AddressList::CreateIPv6Address(&ip_number[0], canonical_name);
34 } else {
35 NOTREACHED();
36 return ERR_UNEXPECTED;
37 }
38
35 return OK; 39 return OK;
36 } 40 }
37 41
38 } // namespace 42 } // namespace
39 43
40 MockHostResolverBase::MockHostResolverBase(bool use_caching) 44 MockHostResolverBase::MockHostResolverBase(bool use_caching)
41 : use_caching_(use_caching) { 45 : use_caching_(use_caching) {
42 Reset(NULL); 46 Reset(NULL);
43 } 47 }
44 48
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 DCHECK(!replacement.empty()); 154 DCHECK(!replacement.empty());
151 Rule rule(Rule::kResolverTypeSystem, host_pattern, 155 Rule rule(Rule::kResolverTypeSystem, host_pattern,
152 address_family, 0, replacement, "", 0); 156 address_family, 0, replacement, "", 0);
153 rules_.push_back(rule); 157 rules_.push_back(rule);
154 } 158 }
155 159
156 void RuleBasedHostResolverProc::AddIPLiteralRule( 160 void RuleBasedHostResolverProc::AddIPLiteralRule(
157 const std::string& host_pattern, 161 const std::string& host_pattern,
158 const std::string& ip_literal, 162 const std::string& ip_literal,
159 const std::string& canonical_name) { 163 const std::string& canonical_name) {
160 // Literals are always resolved to themselves by HostResolverImpl,
161 // consequently we do not support remapping them.
162 IPAddressNumber ip_number;
163 DCHECK(!ParseIPLiteralToNumber(host_pattern, &ip_number));
164 Rule rule(Rule::kResolverTypeIPLiteral, 164 Rule rule(Rule::kResolverTypeIPLiteral,
165 host_pattern, 165 host_pattern,
166 ADDRESS_FAMILY_UNSPECIFIED, 166 ADDRESS_FAMILY_UNSPECIFIED,
167 canonical_name.empty() ? 0 : HOST_RESOLVER_CANONNAME, 167 canonical_name.empty() ? 0 : HOST_RESOLVER_CANONNAME,
168 ip_literal, 168 ip_literal,
169 canonical_name, 169 canonical_name,
170 0); 170 0);
171 rules_.push_back(rule); 171 rules_.push_back(rule);
172 } 172 }
173 173
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 CHECK_EQ(old_proc, current_proc_); 254 CHECK_EQ(old_proc, current_proc_);
255 } 255 }
256 256
257 void ScopedDefaultHostResolverProc::Init(HostResolverProc* proc) { 257 void ScopedDefaultHostResolverProc::Init(HostResolverProc* proc) {
258 current_proc_ = proc; 258 current_proc_ = proc;
259 previous_proc_ = HostResolverProc::SetDefault(current_proc_); 259 previous_proc_ = HostResolverProc::SetDefault(current_proc_);
260 current_proc_->SetLastProc(previous_proc_); 260 current_proc_->SetLastProc(previous_proc_);
261 } 261 }
262 262
263 } // namespace net 263 } // namespace net
OLDNEW
« no previous file with comments | « net/base/host_resolver_impl_unittest.cc ('k') | net/socket/ssl_client_socket_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698