summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvandebo@chromium.org <vandebo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-20 01:16:13 +0000
committervandebo@chromium.org <vandebo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-20 01:16:13 +0000
commit7c28e9ad3e58e826e328920baff216c598dbc04d (patch)
tree88e47a1a29af0a3073add6d19045e3cd815b268a
parent02b0702ddbc1ffdea4dffcedd4d70274f1be38fa (diff)
downloadchromium_src-7c28e9ad3e58e826e328920baff216c598dbc04d.zip
chromium_src-7c28e9ad3e58e826e328920baff216c598dbc04d.tar.gz
chromium_src-7c28e9ad3e58e826e328920baff216c598dbc04d.tar.bz2
Disable backup connect jobs for all pools except TCPClientSocketPool
BUG=36629 TEST=net_unittests Review URL: http://codereview.chromium.org/1120007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@42179 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--net/socket/client_socket_pool_base.cc3
-rw-r--r--net/socket/client_socket_pool_base.h7
-rw-r--r--net/socket/client_socket_pool_base_unittest.cc16
-rw-r--r--net/socket/tcp_client_socket_pool.cc4
4 files changed, 16 insertions, 14 deletions
diff --git a/net/socket/client_socket_pool_base.cc b/net/socket/client_socket_pool_base.cc
index 3e32cc1..d567743 100644
--- a/net/socket/client_socket_pool_base.cc
+++ b/net/socket/client_socket_pool_base.cc
@@ -116,6 +116,7 @@ ClientSocketPoolBaseHelper::ClientSocketPoolBaseHelper(
may_have_stalled_group_(false),
connect_job_factory_(connect_job_factory),
network_change_notifier_(network_change_notifier),
+ backup_jobs_enabled_(false),
ALLOW_THIS_IN_INITIALIZER_LIST(method_factory_(this)) {
DCHECK_LE(0, max_sockets_per_group);
DCHECK_LE(max_sockets_per_group, max_sockets);
@@ -243,7 +244,7 @@ int ClientSocketPoolBaseHelper::RequestSocketInternal(
// If we don't have any sockets in this group, set a timer for potentially
// creating a new one. If the SYN is lost, this backup socket may complete
// before the slow socket, improving end user latency.
- if (group.IsEmpty() && !group.backup_job) {
+ if (group.IsEmpty() && !group.backup_job && backup_jobs_enabled_) {
group.backup_job = connect_job_factory_->NewConnectJob(group_name,
*request,
this,
diff --git a/net/socket/client_socket_pool_base.h b/net/socket/client_socket_pool_base.h
index f6041a1..08fb0f0 100644
--- a/net/socket/client_socket_pool_base.h
+++ b/net/socket/client_socket_pool_base.h
@@ -222,6 +222,8 @@ class ClientSocketPoolBaseHelper
// sockets that timed out or can't be reused. Made public for testing.
void CleanupIdleSockets(bool force);
+ void enable_backup_jobs() { backup_jobs_enabled_ = true; };
+
private:
friend class base::RefCounted<ClientSocketPoolBaseHelper>;
@@ -427,6 +429,9 @@ class ClientSocketPoolBaseHelper
NetworkChangeNotifier* const network_change_notifier_;
+ // TODO(vandebo) Remove when backup jobs move to TCPClientSocketPool
+ bool backup_jobs_enabled_;
+
// A factory to pin the backup_job tasks.
ScopedRunnableMethodFactory<ClientSocketPoolBaseHelper> method_factory_;
};
@@ -555,6 +560,8 @@ class ClientSocketPoolBase {
return helper_->CleanupIdleSockets(force);
}
+ void enable_backup_jobs() { helper_->enable_backup_jobs(); };
+
private:
// This adaptor class exists to bridge the
// internal::ClientSocketPoolBaseHelper::ConnectJobFactory and
diff --git a/net/socket/client_socket_pool_base_unittest.cc b/net/socket/client_socket_pool_base_unittest.cc
index 1c0b1cf..cffa75a 100644
--- a/net/socket/client_socket_pool_base_unittest.cc
+++ b/net/socket/client_socket_pool_base_unittest.cc
@@ -1127,19 +1127,15 @@ TEST_F(ClientSocketPoolBaseTest, BasicAsynchronous) {
EXPECT_TRUE(req.handle()->socket());
req.handle()->Reset();
- EXPECT_EQ(7u, log.entries().size());
+ EXPECT_EQ(5u, log.entries().size());
EXPECT_TRUE(LogContainsBeginEvent(
log.entries(), 0, NetLog::TYPE_SOCKET_POOL));
EXPECT_TRUE(LogContainsBeginEvent(
log.entries(), 1, NetLog::TYPE_SOCKET_POOL_CONNECT_JOB));
EXPECT_TRUE(LogContainsEndEvent(
log.entries(), 2, NetLog::TYPE_SOCKET_POOL_CONNECT_JOB));
- EXPECT_TRUE(LogContainsEvent(
- log.entries(), 3, NetLog::TYPE_CANCELLED, NetLog::PHASE_NONE));
EXPECT_TRUE(LogContainsEndEvent(
- log.entries(), 4, NetLog::TYPE_SOCKET_POOL_CONNECT_JOB));
- EXPECT_TRUE(LogContainsEndEvent(
- log.entries(), 6, NetLog::TYPE_SOCKET_POOL));
+ log.entries(), 4, NetLog::TYPE_SOCKET_POOL));
}
TEST_F(ClientSocketPoolBaseTest,
@@ -1155,19 +1151,15 @@ TEST_F(ClientSocketPoolBaseTest,
EXPECT_EQ(LOAD_STATE_CONNECTING, pool_->GetLoadState("a", req.handle()));
EXPECT_EQ(ERR_CONNECTION_FAILED, req.WaitForResult());
- EXPECT_EQ(7u, log.entries().size());
+ EXPECT_EQ(5u, log.entries().size());
EXPECT_TRUE(LogContainsBeginEvent(
log.entries(), 0, NetLog::TYPE_SOCKET_POOL));
EXPECT_TRUE(LogContainsBeginEvent(
log.entries(), 1, NetLog::TYPE_SOCKET_POOL_CONNECT_JOB));
EXPECT_TRUE(LogContainsEndEvent(
log.entries(), 2, NetLog::TYPE_SOCKET_POOL_CONNECT_JOB));
- EXPECT_TRUE(LogContainsEvent(
- log.entries(), 3, NetLog::TYPE_CANCELLED, NetLog::PHASE_NONE));
EXPECT_TRUE(LogContainsEndEvent(
- log.entries(), 4, NetLog::TYPE_SOCKET_POOL_CONNECT_JOB));
- EXPECT_TRUE(LogContainsEndEvent(
- log.entries(), 6, NetLog::TYPE_SOCKET_POOL));
+ log.entries(), 4, NetLog::TYPE_SOCKET_POOL));
}
TEST_F(ClientSocketPoolBaseTest, TwoRequestsCancelOne) {
diff --git a/net/socket/tcp_client_socket_pool.cc b/net/socket/tcp_client_socket_pool.cc
index 8e2b4f0c..2c5d63f 100644
--- a/net/socket/tcp_client_socket_pool.cc
+++ b/net/socket/tcp_client_socket_pool.cc
@@ -177,7 +177,9 @@ TCPClientSocketPool::TCPClientSocketPool(
base::TimeDelta::FromSeconds(kUnusedIdleSocketTimeout),
base::TimeDelta::FromSeconds(kUsedIdleSocketTimeout),
new TCPConnectJobFactory(client_socket_factory, host_resolver),
- network_change_notifier) {}
+ network_change_notifier) {
+ base_.enable_backup_jobs();
+}
TCPClientSocketPool::~TCPClientSocketPool() {}