Index: net/proxy/proxy_config_service_linux.cc |
=================================================================== |
--- net/proxy/proxy_config_service_linux.cc (revision 60502) |
+++ net/proxy/proxy_config_service_linux.cc (working copy) |
@@ -43,11 +43,11 @@ |
// TODO(arindam): Remove URI string manipulation by using MapUrlSchemeToProxy. |
std::string FixupProxyHostScheme(ProxyServer::Scheme scheme, |
std::string host) { |
- if (scheme == ProxyServer::SCHEME_SOCKS4 && |
- StartsWithASCII(host, "socks5://", false)) { |
- // We default to socks 4, but if the user specifically set it to |
- // socks5://, then use that. |
- scheme = ProxyServer::SCHEME_SOCKS5; |
+ if (scheme == ProxyServer::SCHEME_SOCKS5 && |
+ StartsWithASCII(host, "socks4://", false)) { |
+ // We default to socks 5, but if the user specifically set it to |
+ // socks4://, then use that. |
+ scheme = ProxyServer::SCHEME_SOCKS4; |
} |
// Strip the scheme if any. |
std::string::size_type colon = host.find("://"); |
@@ -152,11 +152,13 @@ |
} |
if (config->proxy_rules().empty()) { |
// If the above were not defined, try for socks. |
- ProxyServer::Scheme scheme = ProxyServer::SCHEME_SOCKS4; |
+ // For environment variables, we default to version 5, per the gnome |
+ // documentation: http://library.gnome.org/devel/gnet/stable/gnet-socks.html |
+ ProxyServer::Scheme scheme = ProxyServer::SCHEME_SOCKS5; |
std::string env_version; |
if (env_var_getter_->GetVar("SOCKS_VERSION", &env_version) |
- && env_version == "5") |
- scheme = ProxyServer::SCHEME_SOCKS5; |
+ && env_version == "4") |
+ scheme = ProxyServer::SCHEME_SOCKS4; |
if (GetProxyFromEnvVarForScheme("SOCKS_SERVER", scheme, &proxy_server)) { |
config->proxy_rules().type = ProxyConfig::ProxyRules::TYPE_SINGLE_PROXY; |
config->proxy_rules().single_proxy = proxy_server; |
@@ -915,7 +917,7 @@ |
host += ":" + base::IntToString(port); |
} |
host = FixupProxyHostScheme( |
- is_socks ? ProxyServer::SCHEME_SOCKS4 : ProxyServer::SCHEME_HTTP, |
+ is_socks ? ProxyServer::SCHEME_SOCKS5 : ProxyServer::SCHEME_HTTP, |
host); |
ProxyServer proxy_server = ProxyServer::FromURI(host, |
ProxyServer::SCHEME_HTTP); |
@@ -982,7 +984,9 @@ |
// Try socks. |
if (GetProxyFromGConf("/system/proxy/socks_", true, &proxy_server)) { |
// gconf settings do not appear to distinguish between socks |
- // version. We default to version 4. |
+ // version. We default to version 5. For more information on this policy |
+ // decisions, see: |
+ // http://code.google.com/p/chromium/issues/detail?id=55912#c2 |
config->proxy_rules().type = ProxyConfig::ProxyRules::TYPE_SINGLE_PROXY; |
config->proxy_rules().single_proxy = proxy_server; |
} |