Introduce a policy to control the maximal number of connections per proxy server.
BUG=63658
TEST=All policy unit_tests should pass.
Review URL: http://codereview.chromium.org/7326017
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@91998 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc
index 1b35f11..a68073d 100644
--- a/chrome/browser/browser_process_impl.cc
+++ b/chrome/browser/browser_process_impl.cc
@@ -78,6 +78,7 @@
#include "content/browser/renderer_host/resource_dispatcher_host.h"
#include "content/common/notification_service.h"
#include "ipc/ipc_logging.h"
+#include "net/socket/client_socket_pool_manager.h"
#include "net/url_request/url_request_context_getter.h"
#include "ui/base/clipboard/clipboard.h"
#include "ui/base/l10n/l10n_util.h"
@@ -850,6 +851,15 @@
// able so we need to have it when initializing the profiles.
local_state_->RegisterFilePathPref(prefs::kDiskCacheDir, FilePath());
+ // Another policy that needs to be defined before the net subsystem is
+ // initialized is MaxConnectionsPerProxy so we do it here.
+ local_state_->RegisterIntegerPref(prefs::kMaxConnectionsPerProxy,
+ net::kDefaultMaxSocketsPerProxyServer);
+ int max_per_proxy = local_state_->GetInteger(prefs::kMaxConnectionsPerProxy);
+ net::ClientSocketPoolManager::set_max_sockets_per_proxy_server(
+ std::max(std::min(max_per_proxy, 99),
+ net::ClientSocketPoolManager::max_sockets_per_group()));
+
// This is observed by ChildProcessSecurityPolicy, which lives in content/
// though, so it can't register itself.
local_state_->RegisterListPref(prefs::kDisabledSchemes);