summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/chrome_browser_main.cc9
-rw-r--r--net/http/http_proxy_client_socket_pool.cc5
-rw-r--r--net/socket/client_socket_pool.cc31
-rw-r--r--net/socket/client_socket_pool.h7
-rw-r--r--net/socket/client_socket_pool_base.h3
-rw-r--r--net/socket/client_socket_pool_base_unittest.cc5
-rw-r--r--net/socket/client_socket_pool_manager.cc18
-rw-r--r--net/socket/client_socket_pool_manager.h4
-rw-r--r--net/socket/socks_client_socket_pool.cc5
-rw-r--r--net/socket/ssl_client_socket_pool.cc5
-rw-r--r--net/socket/transport_client_socket_pool.cc5
11 files changed, 62 insertions, 35 deletions
diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_browser_main.cc
index 36a9880..8fa106e 100644
--- a/chrome/browser/chrome_browser_main.cc
+++ b/chrome/browser/chrome_browser_main.cc
@@ -798,11 +798,14 @@ void ChromeBrowserMainParts::SocketTimeoutFieldTrial() {
const int idle_to_trial_group = socket_timeout_trial->group();
if (idle_to_trial_group == socket_timeout_5) {
- net::ClientSocketPool::set_unused_idle_socket_timeout(5);
+ net::ClientSocketPool::set_unused_idle_socket_timeout(
+ base::TimeDelta::FromSeconds(5));
} else if (idle_to_trial_group == socket_timeout_10) {
- net::ClientSocketPool::set_unused_idle_socket_timeout(10);
+ net::ClientSocketPool::set_unused_idle_socket_timeout(
+ base::TimeDelta::FromSeconds(10));
} else if (idle_to_trial_group == socket_timeout_20) {
- net::ClientSocketPool::set_unused_idle_socket_timeout(20);
+ net::ClientSocketPool::set_unused_idle_socket_timeout(
+ base::TimeDelta::FromSeconds(20));
} else {
NOTREACHED();
}
diff --git a/net/http/http_proxy_client_socket_pool.cc b/net/http/http_proxy_client_socket_pool.cc
index b433f26..d4c080f 100644
--- a/net/http/http_proxy_client_socket_pool.cc
+++ b/net/http/http_proxy_client_socket_pool.cc
@@ -386,9 +386,8 @@ HttpProxyClientSocketPool::HttpProxyClientSocketPool(
: transport_pool_(transport_pool),
ssl_pool_(ssl_pool),
base_(max_sockets, max_sockets_per_group, histograms,
- base::TimeDelta::FromSeconds(
- ClientSocketPool::unused_idle_socket_timeout()),
- base::TimeDelta::FromSeconds(kUsedIdleSocketTimeout),
+ ClientSocketPool::unused_idle_socket_timeout(),
+ ClientSocketPool::used_idle_socket_timeout(),
new HttpProxyConnectJobFactory(transport_pool,
ssl_pool,
host_resolver,
diff --git a/net/socket/client_socket_pool.cc b/net/socket/client_socket_pool.cc
index 06e2805..a1967ef 100644
--- a/net/socket/client_socket_pool.cc
+++ b/net/socket/client_socket_pool.cc
@@ -1,29 +1,46 @@
-// 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.
#include "net/socket/client_socket_pool.h"
+#include "base/logging.h"
+
namespace {
-// The maximum duration, in seconds, to keep used idle persistent sockets
+// The maximum duration, in seconds, to keep unused idle persistent sockets
// alive.
// TODO(ziadh): Change this timeout after getting histogram data on how long it
// should be.
-int g_unused_idle_socket_timeout = 10;
+int g_unused_idle_socket_timeout_s = 10;
+
+// The maximum duration, in seconds, to keep used idle persistent sockets alive.
+int g_used_idle_socket_timeout_s = 300; // 5 minutes
} // namespace
namespace net {
// static
-int ClientSocketPool::unused_idle_socket_timeout() {
- return g_unused_idle_socket_timeout;
+base::TimeDelta ClientSocketPool::unused_idle_socket_timeout() {
+ return base::TimeDelta::FromSeconds(g_unused_idle_socket_timeout_s);
+}
+
+// static
+void ClientSocketPool::set_unused_idle_socket_timeout(base::TimeDelta timeout) {
+ DCHECK_GT(timeout.InSeconds(), 0);
+ g_unused_idle_socket_timeout_s = timeout.InSeconds();
+}
+
+// static
+base::TimeDelta ClientSocketPool::used_idle_socket_timeout() {
+ return base::TimeDelta::FromSeconds(g_used_idle_socket_timeout_s);
}
// static
-void ClientSocketPool::set_unused_idle_socket_timeout(int timeout) {
- g_unused_idle_socket_timeout = timeout;
+void ClientSocketPool::set_used_idle_socket_timeout(base::TimeDelta timeout) {
+ DCHECK_GT(timeout.InSeconds(), 0);
+ g_used_idle_socket_timeout_s = timeout.InSeconds();
}
ClientSocketPool::ClientSocketPool() {}
diff --git a/net/socket/client_socket_pool.h b/net/socket/client_socket_pool.h
index 82d7390..5f618cd 100644
--- a/net/socket/client_socket_pool.h
+++ b/net/socket/client_socket_pool.h
@@ -139,8 +139,11 @@ class NET_EXPORT ClientSocketPool {
// UMA_HISTOGRAM_* macros because they are callsite static.
virtual ClientSocketPoolHistograms* histograms() const = 0;
- static int unused_idle_socket_timeout();
- static void set_unused_idle_socket_timeout(int timeout);
+ static base::TimeDelta unused_idle_socket_timeout();
+ static void set_unused_idle_socket_timeout(base::TimeDelta timeout);
+
+ static base::TimeDelta used_idle_socket_timeout();
+ static void set_used_idle_socket_timeout(base::TimeDelta timeout);
protected:
ClientSocketPool();
diff --git a/net/socket/client_socket_pool_base.h b/net/socket/client_socket_pool_base.h
index 864369b..9e46e5e 100644
--- a/net/socket/client_socket_pool_base.h
+++ b/net/socket/client_socket_pool_base.h
@@ -573,9 +573,6 @@ class NET_EXPORT_PRIVATE ClientSocketPoolBaseHelper
} // namespace internal
-// The maximum duration, in seconds, to keep used idle persistent sockets alive.
-static const int kUsedIdleSocketTimeout = 300; // 5 minutes
-
template <typename SocketParams>
class ClientSocketPoolBase {
public:
diff --git a/net/socket/client_socket_pool_base_unittest.cc b/net/socket/client_socket_pool_base_unittest.cc
index 2be05b1..985a4c5 100644
--- a/net/socket/client_socket_pool_base_unittest.cc
+++ b/net/socket/client_socket_pool_base_unittest.cc
@@ -565,9 +565,8 @@ class ClientSocketPoolBaseTest : public testing::Test {
CreatePoolWithIdleTimeouts(
max_sockets,
max_sockets_per_group,
- base::TimeDelta::FromSeconds(
- ClientSocketPool::unused_idle_socket_timeout()),
- base::TimeDelta::FromSeconds(kUsedIdleSocketTimeout));
+ ClientSocketPool::unused_idle_socket_timeout(),
+ ClientSocketPool::used_idle_socket_timeout());
}
void CreatePoolWithIdleTimeouts(
diff --git a/net/socket/client_socket_pool_manager.cc b/net/socket/client_socket_pool_manager.cc
index f4b642c..76b8715 100644
--- a/net/socket/client_socket_pool_manager.cc
+++ b/net/socket/client_socket_pool_manager.cc
@@ -29,8 +29,8 @@ namespace net {
namespace {
-// Total limit of sockets.
-int g_max_sockets = 256;
+// Limit of sockets of each socket pool.
+int g_max_sockets_per_pool = 256;
// Default to allow up to 6 connections per host. Experiment and tuning may
// try other values (greater than 0). Too large may cause many problems, such
@@ -275,14 +275,14 @@ ClientSocketPoolManager::ClientSocketPoolManager(
ssl_config_service_(ssl_config_service),
transport_pool_histograms_("TCP"),
transport_socket_pool_(new TransportClientSocketPool(
- g_max_sockets, g_max_sockets_per_group,
+ g_max_sockets_per_pool, g_max_sockets_per_group,
&transport_pool_histograms_,
host_resolver,
socket_factory_,
net_log)),
ssl_pool_histograms_("SSL2"),
ssl_socket_pool_(new SSLClientSocketPool(
- g_max_sockets, g_max_sockets_per_group,
+ g_max_sockets_per_pool, g_max_sockets_per_group,
&ssl_pool_histograms_,
host_resolver,
cert_verifier,
@@ -548,6 +548,14 @@ SSLClientSocketPool* ClientSocketPoolManager::GetSocketPoolForSSLWithProxy(
}
// static
+void ClientSocketPoolManager::set_max_sockets_per_pool(int socket_count) {
+ DCHECK_LT(0, socket_count);
+ DCHECK_GT(1000, socket_count); // Sanity check.
+ g_max_sockets_per_pool = socket_count;
+ DCHECK_GE(g_max_sockets_per_pool, g_max_sockets_per_group);
+}
+
+// static
int ClientSocketPoolManager::max_sockets_per_group() {
return g_max_sockets_per_group;
}
@@ -559,7 +567,7 @@ void ClientSocketPoolManager::set_max_sockets_per_group(int socket_count) {
DCHECK_GT(100, socket_count);
g_max_sockets_per_group = socket_count;
- DCHECK_GE(g_max_sockets, g_max_sockets_per_group);
+ DCHECK_GE(g_max_sockets_per_pool, g_max_sockets_per_group);
DCHECK_GE(g_max_sockets_per_proxy_server, g_max_sockets_per_group);
}
diff --git a/net/socket/client_socket_pool_manager.h b/net/socket/client_socket_pool_manager.h
index 29393b4..4829550 100644
--- a/net/socket/client_socket_pool_manager.h
+++ b/net/socket/client_socket_pool_manager.h
@@ -110,6 +110,10 @@ class ClientSocketPoolManager : public base::NonThreadSafe,
SSLClientSocketPool* GetSocketPoolForSSLWithProxy(
const HostPortPair& proxy_server);
+ // The setter methods below affect only newly created socket pools after the
+ // methods are called. Normally they should be called at program startup
+ // before any ClientSocketPoolManager is created.
+ NET_EXPORT static void set_max_sockets_per_pool(int socket_count);
NET_EXPORT static int max_sockets_per_group();
NET_EXPORT static void set_max_sockets_per_group(int socket_count);
NET_EXPORT static void set_max_sockets_per_proxy_server(int socket_count);
diff --git a/net/socket/socks_client_socket_pool.cc b/net/socket/socks_client_socket_pool.cc
index c80bb66..4dbb442 100644
--- a/net/socket/socks_client_socket_pool.cc
+++ b/net/socket/socks_client_socket_pool.cc
@@ -199,9 +199,8 @@ SOCKSClientSocketPool::SOCKSClientSocketPool(
NetLog* net_log)
: transport_pool_(transport_pool),
base_(max_sockets, max_sockets_per_group, histograms,
- base::TimeDelta::FromSeconds(
- ClientSocketPool::unused_idle_socket_timeout()),
- base::TimeDelta::FromSeconds(kUsedIdleSocketTimeout),
+ ClientSocketPool::unused_idle_socket_timeout(),
+ ClientSocketPool::used_idle_socket_timeout(),
new SOCKSConnectJobFactory(transport_pool,
host_resolver,
net_log)) {
diff --git a/net/socket/ssl_client_socket_pool.cc b/net/socket/ssl_client_socket_pool.cc
index 4698a3a..a924b5a 100644
--- a/net/socket/ssl_client_socket_pool.cc
+++ b/net/socket/ssl_client_socket_pool.cc
@@ -459,9 +459,8 @@ SSLClientSocketPool::SSLClientSocketPool(
socks_pool_(socks_pool),
http_proxy_pool_(http_proxy_pool),
base_(max_sockets, max_sockets_per_group, histograms,
- base::TimeDelta::FromSeconds(
- ClientSocketPool::unused_idle_socket_timeout()),
- base::TimeDelta::FromSeconds(kUsedIdleSocketTimeout),
+ ClientSocketPool::unused_idle_socket_timeout(),
+ ClientSocketPool::used_idle_socket_timeout(),
new SSLConnectJobFactory(transport_pool,
socks_pool,
http_proxy_pool,
diff --git a/net/socket/transport_client_socket_pool.cc b/net/socket/transport_client_socket_pool.cc
index cd666d3..7138bb9 100644
--- a/net/socket/transport_client_socket_pool.cc
+++ b/net/socket/transport_client_socket_pool.cc
@@ -385,9 +385,8 @@ TransportClientSocketPool::TransportClientSocketPool(
ClientSocketFactory* client_socket_factory,
NetLog* net_log)
: base_(max_sockets, max_sockets_per_group, histograms,
- base::TimeDelta::FromSeconds(
- ClientSocketPool::unused_idle_socket_timeout()),
- base::TimeDelta::FromSeconds(kUsedIdleSocketTimeout),
+ ClientSocketPool::unused_idle_socket_timeout(),
+ ClientSocketPool::used_idle_socket_timeout(),
new TransportConnectJobFactory(client_socket_factory,
host_resolver, net_log)) {
base_.EnableConnectBackupJobs();