diff options
author | vandebo@chromium.org <vandebo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-20 01:16:13 +0000 |
---|---|---|
committer | vandebo@chromium.org <vandebo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-20 01:16:13 +0000 |
commit | 7c28e9ad3e58e826e328920baff216c598dbc04d (patch) | |
tree | 88e47a1a29af0a3073add6d19045e3cd815b268a | |
parent | 02b0702ddbc1ffdea4dffcedd4d70274f1be38fa (diff) | |
download | chromium_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.cc | 3 | ||||
-rw-r--r-- | net/socket/client_socket_pool_base.h | 7 | ||||
-rw-r--r-- | net/socket/client_socket_pool_base_unittest.cc | 16 | ||||
-rw-r--r-- | net/socket/tcp_client_socket_pool.cc | 4 |
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() {} |