X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fnet%2Fproxy%2Fproxy_bypass_rules.cc;h=239a2fe30c5f0c482f34a546aadeebcb397a11d8;hb=3545e9f2671f595d2a2f3ee75ca0393b01e35ef6;hp=6bf1c6157e560e3fa72b1df152affcb037f962a7;hpb=7d210d4c7e9ba36e635eabc5b5780495f8a63292;p=platform%2Fframework%2Fweb%2Fcrosswalk.git diff --git a/src/net/proxy/proxy_bypass_rules.cc b/src/net/proxy/proxy_bypass_rules.cc index 6bf1c61..239a2fe 100644 --- a/src/net/proxy/proxy_bypass_rules.cc +++ b/src/net/proxy/proxy_bypass_rules.cc @@ -6,10 +6,11 @@ #include "base/stl_util.h" #include "base/strings/string_number_conversions.h" -#include "base/strings/string_util.h" -#include "base/strings/stringprintf.h" #include "base/strings/string_piece.h" #include "base/strings/string_tokenizer.h" +#include "base/strings/string_util.h" +#include "base/strings/stringprintf.h" +#include "net/base/host_port_pair.h" #include "net/base/net_util.h" namespace net { @@ -131,6 +132,7 @@ class BypassIPBlockRule : public ProxyBypassRules::Rule { }; // Returns true if the given string represents an IP address. +// IPv6 addresses are expected to be bracketed. bool IsIPAddress(const std::string& domain) { // From GURL::HostIsIPAddress() url::RawCanonOutputT ignored_output; @@ -305,9 +307,12 @@ bool ProxyBypassRules::AddRuleFromStringInternal( std::string host; int port; if (ParseHostAndPort(raw, &host, &port)) { - if (IsIPAddress(host)) { + // Note that HostPortPair is used to merely to convert any IPv6 literals to + // a URL-safe format that can be used by canonicalization below. + std::string bracketed_host = HostPortPair(host, 80).HostForURL(); + if (IsIPAddress(bracketed_host)) { // Canonicalize the IP literal before adding it as a string pattern. - GURL tmp_url("http://" + host); + GURL tmp_url("http://" + bracketed_host); return AddRuleForHostname(scheme, tmp_url.host(), port); } }