Chromium Code Reviews| Index: net/base/net_util.cc |
| diff --git a/net/base/net_util.cc b/net/base/net_util.cc |
| index f3b01271910f21a755fe0494fdf5b0eccb646dd6..d1f870da232fcd4f6a6a0a3c189761fc6f1af73a 100644 |
| --- a/net/base/net_util.cc |
| +++ b/net/base/net_util.cc |
| @@ -1,4 +1,4 @@ |
| -// Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| +// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| @@ -2111,4 +2111,36 @@ int GetPortFromSockaddr(const struct sockaddr* address, socklen_t address_len) { |
| return ntohs(*port_field); |
| } |
| +bool IsLocalhost(const std::string& host) { |
| + if (host == "localhost") |
|
wtc
2011/03/23 00:06:58
We should also check for "localhost.localdomain",
Jói
2011/03/23 23:38:24
Thanks, I was unaware of these.
|
| + return true; |
| + |
| + IPAddressNumber ip_number; |
| + if (ParseIPLiteralToNumber(host, &ip_number)) { |
| + size_t size = ip_number.size(); |
| + if (size == 4) { |
|
wtc
2011/03/23 00:06:58
Nit: we usually use a switch statement for this ki
Jói
2011/03/23 23:38:24
Done.
|
| + IPAddressNumber localhost_prefix; |
| + localhost_prefix.push_back(127); |
| + for (int i = 0; i < 3; ++i) { |
| + localhost_prefix.push_back(0); |
| + } |
| + return IPNumberMatchesPrefix(ip_number, localhost_prefix, 8); |
| + } else if (size == 16) { |
| + if (!ip_number[15] == 1) |
|
wtc
2011/03/23 00:06:58
BUG: this should be
ip_number[15] != 1
(You sho
Jói
2011/03/23 23:38:24
Thanks, fixed that and added the test case.
I cou
|
| + return false; |
| + |
| + for (int i = 0; i < 15; ++i) { |
| + if (ip_number[i] != 0) |
| + return false; |
| + } |
| + |
| + return true; |
| + } else { |
| + NOTREACHED(); |
| + } |
| + } |
| + |
| + return false; |
| +} |
| + |
| } // namespace net |