Chromium Code Reviews| Index: chrome/browser/io_thread.cc |
| =================================================================== |
| --- chrome/browser/io_thread.cc (revision 39997) |
| +++ chrome/browser/io_thread.cc (working copy) |
| @@ -24,49 +24,44 @@ |
| net::HostResolver* CreateGlobalHostResolver( |
| net::NetworkChangeNotifier* network_change_notifier) { |
| + net::HostResolver* global_host_resolver = NULL; |
| + |
| const CommandLine& command_line = *CommandLine::ForCurrentProcess(); |
| - net::HostResolver* global_host_resolver = |
| + |
| + global_host_resolver = |
| net::CreateSystemHostResolver(network_change_notifier); |
| - // Determine if we should disable IPv6 support. |
| if (!command_line.HasSwitch(switches::kEnableIPv6)) { |
| - if (command_line.HasSwitch(switches::kDisableIPv6)) { |
| - global_host_resolver->SetDefaultAddressFamily(net::ADDRESS_FAMILY_IPV4); |
| - } else { |
| - net::HostResolverImpl* host_resolver_impl = |
| - global_host_resolver->GetAsHostResolverImpl(); |
| - if (host_resolver_impl != NULL) { |
| - // (optionally) Use probe to decide if support is warranted. |
| + // Measure impact of allowing IPv6 support without probing. |
| + const FieldTrial::Probability kDivisor = 100; |
| + const FieldTrial::Probability kProbability = 50; // 50% probability. |
| + FieldTrial* trial = new FieldTrial("IPv6_Probe", kDivisor); |
| + int skip_group = trial->AppendGroup("_IPv6_probe_skipped", kProbability); |
| + trial->AppendGroup("_IPv6_probe_done", |
| + FieldTrial::kAllRemainingProbability); |
| + bool use_ipv6_probe = (trial->group() != skip_group); |
| - // Measure impact of probing to allow IPv6. |
| - // Some users report confused OS handling of IPv6, leading to large |
| - // latency. If we can show that IPv6 is not supported, then disabliing |
| - // it will work around such problems. |
| - const FieldTrial::Probability kDivisor = 100; |
| - const FieldTrial::Probability kProbability = 50; // 50% probability. |
| - FieldTrial* trial = new FieldTrial("IPv6_Probe", kDivisor); |
| - int skip_group = trial->AppendGroup("_IPv6_probe_skipped", |
| - kProbability); |
| - trial->AppendGroup("_IPv6_probe_done", |
| - FieldTrial::kAllRemainingProbability); |
| - bool use_ipv6_probe = (trial->group() != skip_group); |
| - if (use_ipv6_probe) |
| - host_resolver_impl->ProbeIPv6Support(); |
| - } |
| - } |
| + // Perform probe, and then optionally use result to disable IPv6. |
| + // Some users report confused OS handling of IPv6, leading to large |
| + // latency. If we can show that IPv6 is not supported, then disabliing it |
| + // will work around such problems. |
| + if ((!net::IPv6Supported() && use_ipv6_probe) || |
|
wtc
2010/02/25 21:41:10
Perhaps we should wait until the first hostname re
|
| + command_line.HasSwitch(switches::kDisableIPv6)) |
| + global_host_resolver->SetDefaultAddressFamily(net::ADDRESS_FAMILY_IPV4); |
| } |
| // If hostname remappings were specified on the command-line, layer these |
| // rules on top of the real host resolver. This allows forwarding all requests |
| // through a designated test server. |
| - if (!command_line.HasSwitch(switches::kHostResolverRules)) |
| - return global_host_resolver; |
| + if (command_line.HasSwitch(switches::kHostResolverRules)) { |
| + net::MappedHostResolver* remapped_resolver = |
| + new net::MappedHostResolver(global_host_resolver); |
| + global_host_resolver = remapped_resolver; |
| + remapped_resolver->SetRulesFromString( |
| + command_line.GetSwitchValueASCII(switches::kHostResolverRules)); |
| + } |
| - net::MappedHostResolver* remapped_resolver = |
| - new net::MappedHostResolver(global_host_resolver); |
| - remapped_resolver->SetRulesFromString( |
| - command_line.GetSwitchValueASCII(switches::kHostResolverRules)); |
| - return remapped_resolver; |
| + return global_host_resolver; |
| } |
| } // namespace |