summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkristianm@google.com <kristianm@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-30 13:00:20 +0000
committerkristianm@google.com <kristianm@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-30 13:00:20 +0000
commit5acdce175d32ba915ac5933ae197e4fc59f7ec8f (patch)
tree453c421316ffeb17ed92295ca4e16c0df9b62123
parent37961b1922d7abcdad8849e4cbab9b7fda8066d0 (diff)
downloadchromium_src-5acdce175d32ba915ac5933ae197e4fc59f7ec8f.zip
chromium_src-5acdce175d32ba915ac5933ae197e4fc59f7ec8f.tar.gz
chromium_src-5acdce175d32ba915ac5933ae197e4fc59f7ec8f.tar.bz2
Add ignore limits flag and use for sync request
Letting sync request ignore the socket and group limits when loading to prevent the WebCore thread from locking up. BUG=45986,58703 TEST=No new tests Review URL: http://codereview.chromium.org/6756004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@79817 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--content/browser/renderer_host/resource_dispatcher_host.cc3
-rw-r--r--net/base/load_flags_list.h4
-rw-r--r--net/http/http_network_transaction_unittest.cc4
-rw-r--r--net/http/http_proxy_client_socket_pool.cc6
-rw-r--r--net/http/http_proxy_client_socket_pool.h2
-rw-r--r--net/http/http_proxy_client_socket_pool_unittest.cc4
-rw-r--r--net/socket/client_socket_pool_base.cc12
-rw-r--r--net/socket/client_socket_pool_base.h8
-rw-r--r--net/socket/client_socket_pool_base_unittest.cc6
-rw-r--r--net/socket/client_socket_pool_manager.cc7
-rw-r--r--net/socket/deterministic_socket_data_unittest.cc4
-rw-r--r--net/socket/socks_client_socket_pool.cc6
-rw-r--r--net/socket/socks_client_socket_pool.h2
-rw-r--r--net/socket/socks_client_socket_pool_unittest.cc4
-rw-r--r--net/socket/ssl_client_socket_pool.cc5
-rw-r--r--net/socket/ssl_client_socket_pool.h2
-rw-r--r--net/socket/ssl_client_socket_pool_unittest.cc6
-rw-r--r--net/socket/tcp_client_socket_pool.cc7
-rw-r--r--net/socket/tcp_client_socket_pool.h5
-rw-r--r--net/socket/tcp_client_socket_pool_unittest.cc14
-rw-r--r--net/spdy/spdy_http_stream_unittest.cc4
-rw-r--r--net/spdy/spdy_proxy_client_socket_unittest.cc5
-rw-r--r--net/spdy/spdy_session_unittest.cc11
-rw-r--r--net/spdy/spdy_stream_unittest.cc2
24 files changed, 89 insertions, 44 deletions
diff --git a/content/browser/renderer_host/resource_dispatcher_host.cc b/content/browser/renderer_host/resource_dispatcher_host.cc
index b8392d0..d746e15 100644
--- a/content/browser/renderer_host/resource_dispatcher_host.cc
+++ b/content/browser/renderer_host/resource_dispatcher_host.cc
@@ -435,6 +435,9 @@ void ResourceDispatcherHost::BeginRequest(
if (IsPrerenderingChildRoutePair(child_id, route_id))
load_flags |= net::LOAD_PRERENDER;
+ if (sync_result)
+ load_flags |= net::LOAD_IGNORE_LIMITS;
+
// Raw headers are sensitive, as they inclide Cookie/Set-Cookie, so only
// allow requesting them if requestor has ReadRawCookies permission.
if ((load_flags & net::LOAD_REPORT_RAW_HEADERS)
diff --git a/net/base/load_flags_list.h b/net/base/load_flags_list.h
index 25b7948..f6cdddb 100644
--- a/net/base/load_flags_list.h
+++ b/net/base/load_flags_list.h
@@ -105,3 +105,7 @@ LOAD_FLAG(PREFETCH, 1 << 23)
// Indicates that this load was requested by a page that is currently
// prerendering.
LOAD_FLAG(PRERENDER, 1 << 24)
+
+// Indicates that this is a load that ignores limits and should complete
+// immediately.
+LOAD_FLAG(IGNORE_LIMITS, 1 << 25)
diff --git a/net/http/http_network_transaction_unittest.cc b/net/http/http_network_transaction_unittest.cc
index f79b2d2..90cb0c4 100644
--- a/net/http/http_network_transaction_unittest.cc
+++ b/net/http/http_network_transaction_unittest.cc
@@ -7047,7 +7047,7 @@ TEST_F(HttpNetworkTransactionTest,
scoped_refptr<SpdySession> spdy_session =
session->spdy_session_pool()->Get(pair, BoundNetLog());
scoped_refptr<TCPSocketParams> tcp_params(
- new TCPSocketParams(host_port_pair, MEDIUM, GURL(), false));
+ new TCPSocketParams(host_port_pair, MEDIUM, GURL(), false, false));
scoped_ptr<ClientSocketHandle> connection(new ClientSocketHandle);
EXPECT_EQ(ERR_IO_PENDING,
@@ -8296,7 +8296,7 @@ TEST_F(HttpNetworkTransactionTest, PreconnectWithExistingSpdySession) {
scoped_refptr<SpdySession> spdy_session =
session->spdy_session_pool()->Get(pair, BoundNetLog());
scoped_refptr<TCPSocketParams> tcp_params(
- new TCPSocketParams(host_port_pair, MEDIUM, GURL(), false));
+ new TCPSocketParams(host_port_pair, MEDIUM, GURL(), false, false));
TestCompletionCallback callback;
scoped_ptr<ClientSocketHandle> connection(new ClientSocketHandle);
diff --git a/net/http/http_proxy_client_socket_pool.cc b/net/http/http_proxy_client_socket_pool.cc
index 13d6286..39e899c 100644
--- a/net/http/http_proxy_client_socket_pool.cc
+++ b/net/http/http_proxy_client_socket_pool.cc
@@ -1,4 +1,4 @@
-// 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.
@@ -48,6 +48,10 @@ HttpProxySocketParams::HttpProxySocketParams(
tunnel_(tunnel) {
DCHECK((tcp_params == NULL && ssl_params != NULL) ||
(tcp_params != NULL && ssl_params == NULL));
+ if (tcp_params_)
+ ignore_limits_ = tcp_params->ignore_limits();
+ else
+ ignore_limits_ = ssl_params->ignore_limits();
}
const HostResolver::RequestInfo& HttpProxySocketParams::destination() const {
diff --git a/net/http/http_proxy_client_socket_pool.h b/net/http/http_proxy_client_socket_pool.h
index cc9c7a8..3efbf3c 100644
--- a/net/http/http_proxy_client_socket_pool.h
+++ b/net/http/http_proxy_client_socket_pool.h
@@ -66,6 +66,7 @@ class HttpProxySocketParams : public base::RefCounted<HttpProxySocketParams> {
}
const HostResolver::RequestInfo& destination() const;
bool tunnel() const { return tunnel_; }
+ bool ignore_limits() const { return ignore_limits_; }
private:
friend class base::RefCounted<HttpProxySocketParams>;
@@ -80,6 +81,7 @@ class HttpProxySocketParams : public base::RefCounted<HttpProxySocketParams> {
HttpAuthCache* const http_auth_cache_;
HttpAuthHandlerFactory* const http_auth_handler_factory_;
const bool tunnel_;
+ bool ignore_limits_;
DISALLOW_COPY_AND_ASSIGN(HttpProxySocketParams);
};
diff --git a/net/http/http_proxy_client_socket_pool_unittest.cc b/net/http/http_proxy_client_socket_pool_unittest.cc
index 5830b3a7..63bb94a 100644
--- a/net/http/http_proxy_client_socket_pool_unittest.cc
+++ b/net/http/http_proxy_client_socket_pool_unittest.cc
@@ -1,4 +1,4 @@
-// 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.
@@ -49,7 +49,7 @@ class HttpProxyClientSocketPoolTest : public TestWithHttpParam {
HttpProxyClientSocketPoolTest()
: ssl_config_(),
ignored_tcp_socket_params_(new TCPSocketParams(
- HostPortPair("proxy", 80), LOWEST, GURL(), false)),
+ HostPortPair("proxy", 80), LOWEST, GURL(), false, false)),
ignored_ssl_socket_params_(new SSLSocketParams(
ignored_tcp_socket_params_, NULL, NULL, ProxyServer::SCHEME_DIRECT,
HostPortPair("www.google.com", 443), ssl_config_, 0, false, false)),
diff --git a/net/socket/client_socket_pool_base.cc b/net/socket/client_socket_pool_base.cc
index 6d5e410..d84ecd1 100644
--- a/net/socket/client_socket_pool_base.cc
+++ b/net/socket/client_socket_pool_base.cc
@@ -1,4 +1,4 @@
-// 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.
@@ -133,11 +133,13 @@ ClientSocketPoolBaseHelper::Request::Request(
ClientSocketHandle* handle,
CompletionCallback* callback,
RequestPriority priority,
+ bool ignore_limits,
Flags flags,
const BoundNetLog& net_log)
: handle_(handle),
callback_(callback),
priority_(priority),
+ ignore_limits_(ignore_limits),
flags_(flags),
net_log_(net_log) {}
@@ -291,13 +293,14 @@ int ClientSocketPoolBaseHelper::RequestSocketInternal(
return ERR_IO_PENDING;
// Can we make another active socket now?
- if (!group->HasAvailableSocketSlot(max_sockets_per_group_)) {
+ if (!group->HasAvailableSocketSlot(max_sockets_per_group_) &&
+ !request->ignore_limits()) {
request->net_log().AddEvent(
NetLog::TYPE_SOCKET_POOL_STALLED_MAX_SOCKETS_PER_GROUP, NULL);
return ERR_IO_PENDING;
}
- if (ReachedMaxSocketsLimit()) {
+ if (ReachedMaxSocketsLimit() && !request->ignore_limits()) {
if (idle_socket_count() > 0) {
bool closed = CloseOneIdleSocketExceptInGroup(group);
if (preconnecting && !closed)
@@ -942,7 +945,8 @@ bool ClientSocketPoolBaseHelper::ReachedMaxSocketsLimit() const {
// Each connecting socket will eventually connect and be handed out.
int total = handed_out_socket_count_ + connecting_socket_count_ +
idle_socket_count();
- DCHECK_LE(total, max_sockets_);
+ // There can be more sockets than the limit since some requests can ignore
+ // the limit
if (total < max_sockets_)
return false;
return true;
diff --git a/net/socket/client_socket_pool_base.h b/net/socket/client_socket_pool_base.h
index 2382a3f..fba365820 100644
--- a/net/socket/client_socket_pool_base.h
+++ b/net/socket/client_socket_pool_base.h
@@ -171,6 +171,7 @@ class ClientSocketPoolBaseHelper
Request(ClientSocketHandle* handle,
CompletionCallback* callback,
RequestPriority priority,
+ bool ignore_limits,
Flags flags,
const BoundNetLog& net_log);
@@ -179,6 +180,7 @@ class ClientSocketPoolBaseHelper
ClientSocketHandle* handle() const { return handle_; }
CompletionCallback* callback() const { return callback_; }
RequestPriority priority() const { return priority_; }
+ bool ignore_limits() const { return ignore_limits_; }
Flags flags() const { return flags_; }
const BoundNetLog& net_log() const { return net_log_; }
@@ -186,6 +188,7 @@ class ClientSocketPoolBaseHelper
ClientSocketHandle* const handle_;
CompletionCallback* const callback_;
const RequestPriority priority_;
+ bool ignore_limits_;
const Flags flags_;
BoundNetLog net_log_;
@@ -563,10 +566,11 @@ class ClientSocketPoolBase {
CompletionCallback* callback,
RequestPriority priority,
internal::ClientSocketPoolBaseHelper::Flags flags,
+ bool ignore_limits,
const scoped_refptr<SocketParams>& params,
const BoundNetLog& net_log)
: internal::ClientSocketPoolBaseHelper::Request(
- handle, callback, priority, flags, net_log),
+ handle, callback, priority, ignore_limits, flags, net_log),
params_(params) {}
const scoped_refptr<SocketParams>& params() const { return params_; }
@@ -624,6 +628,7 @@ class ClientSocketPoolBase {
Request* request =
new Request(handle, callback, priority,
internal::ClientSocketPoolBaseHelper::NORMAL,
+ params->ignore_limits(),
params, net_log);
return helper_.RequestSocket(group_name, request);
}
@@ -639,6 +644,7 @@ class ClientSocketPoolBase {
NULL /* no callback */,
LOWEST,
internal::ClientSocketPoolBaseHelper::NO_IDLE_SOCKETS,
+ params->ignore_limits(),
params,
net_log);
helper_.RequestSockets(group_name, request, num_sockets);
diff --git a/net/socket/client_socket_pool_base_unittest.cc b/net/socket/client_socket_pool_base_unittest.cc
index 50b7f96..d22b6dc 100644
--- a/net/socket/client_socket_pool_base_unittest.cc
+++ b/net/socket/client_socket_pool_base_unittest.cc
@@ -35,6 +35,8 @@ const int kDefaultMaxSocketsPerGroup = 2;
const net::RequestPriority kDefaultPriority = MEDIUM;
class TestSocketParams : public base::RefCounted<TestSocketParams> {
+ public:
+ bool ignore_limits() { return false; }
private:
friend class base::RefCounted<TestSocketParams>;
~TestSocketParams() {}
@@ -591,7 +593,7 @@ TEST_F(ClientSocketPoolBaseTest, ConnectJob_NoTimeoutOnSynchronousCompletion) {
TestClientSocketPoolBase::Request request(
&ignored, NULL, kDefaultPriority,
internal::ClientSocketPoolBaseHelper::NORMAL,
- params_, BoundNetLog());
+ false, params_, BoundNetLog());
scoped_ptr<TestConnectJob> job(
new TestConnectJob(TestConnectJob::kMockJob,
"a",
@@ -611,7 +613,7 @@ TEST_F(ClientSocketPoolBaseTest, ConnectJob_TimedOut) {
TestClientSocketPoolBase::Request request(
&ignored, NULL, kDefaultPriority,
internal::ClientSocketPoolBaseHelper::NORMAL,
- params_, BoundNetLog());
+ false, params_, BoundNetLog());
// Deleted by TestConnectJobDelegate.
TestConnectJob* job =
new TestConnectJob(TestConnectJob::kMockPendingJob,
diff --git a/net/socket/client_socket_pool_manager.cc b/net/socket/client_socket_pool_manager.cc
index 68ff4ec..8539d72 100644
--- a/net/socket/client_socket_pool_manager.cc
+++ b/net/socket/client_socket_pool_manager.cc
@@ -96,11 +96,13 @@ int InitSocketPoolHelper(const HttpRequestInfo& request_info,
if (using_ssl)
connection_group = base::StringPrintf("ssl/%s", connection_group.c_str());
+ bool ignore_limits = (request_info.load_flags & LOAD_IGNORE_LIMITS) != 0;
if (proxy_info.is_direct()) {
tcp_params = new TCPSocketParams(origin_host_port,
request_info.priority,
request_info.referrer,
- disable_resolver_cache);
+ disable_resolver_cache,
+ ignore_limits);
} else {
ProxyServer proxy_server = proxy_info.proxy_server();
proxy_host_port.reset(new HostPortPair(proxy_server.host_port_pair()));
@@ -108,7 +110,8 @@ int InitSocketPoolHelper(const HttpRequestInfo& request_info,
new TCPSocketParams(*proxy_host_port,
request_info.priority,
request_info.referrer,
- disable_resolver_cache));
+ disable_resolver_cache,
+ ignore_limits));
if (proxy_info.is_http() || proxy_info.is_https()) {
std::string user_agent;
diff --git a/net/socket/deterministic_socket_data_unittest.cc b/net/socket/deterministic_socket_data_unittest.cc
index 5e25aa0..8482a96 100644
--- a/net/socket/deterministic_socket_data_unittest.cc
+++ b/net/socket/deterministic_socket_data_unittest.cc
@@ -1,4 +1,4 @@
-// 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.
@@ -70,7 +70,7 @@ DeterministicSocketDataTest::DeterministicSocketDataTest()
connect_data_(false, OK),
url_("https://www.google.com"),
endpoint_("www.google.com", 443),
- tcp_params_(new TCPSocketParams(endpoint_, LOWEST, url_, false)),
+ tcp_params_(new TCPSocketParams(endpoint_, LOWEST, url_, false, false)),
histograms_(""),
socket_pool_(10, 10, &histograms_, &socket_factory_) {
}
diff --git a/net/socket/socks_client_socket_pool.cc b/net/socket/socks_client_socket_pool.cc
index 42abb7b..97a797e 100644
--- a/net/socket/socks_client_socket_pool.cc
+++ b/net/socket/socks_client_socket_pool.cc
@@ -1,4 +1,4 @@
-// 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.
@@ -26,6 +26,10 @@ SOCKSSocketParams::SOCKSSocketParams(
: tcp_params_(proxy_server),
destination_(host_port_pair),
socks_v5_(socks_v5) {
+ if (tcp_params_)
+ ignore_limits_ = tcp_params_->ignore_limits();
+ else
+ ignore_limits_ = false;
// The referrer is used by the DNS prefetch system to correlate resolutions
// with the page that triggered them. It doesn't impact the actual addresses
// that we resolve to.
diff --git a/net/socket/socks_client_socket_pool.h b/net/socket/socks_client_socket_pool.h
index d0e8699..c25423f 100644
--- a/net/socket/socks_client_socket_pool.h
+++ b/net/socket/socks_client_socket_pool.h
@@ -36,6 +36,7 @@ class SOCKSSocketParams : public base::RefCounted<SOCKSSocketParams> {
}
const HostResolver::RequestInfo& destination() const { return destination_; }
bool is_socks_v5() const { return socks_v5_; }
+ bool ignore_limits() const { return ignore_limits_; }
private:
friend class base::RefCounted<SOCKSSocketParams>;
@@ -46,6 +47,7 @@ class SOCKSSocketParams : public base::RefCounted<SOCKSSocketParams> {
// This is the HTTP destination.
HostResolver::RequestInfo destination_;
const bool socks_v5_;
+ bool ignore_limits_;
DISALLOW_COPY_AND_ASSIGN(SOCKSSocketParams);
};
diff --git a/net/socket/socks_client_socket_pool_unittest.cc b/net/socket/socks_client_socket_pool_unittest.cc
index 9627f1a..b8d44c4 100644
--- a/net/socket/socks_client_socket_pool_unittest.cc
+++ b/net/socket/socks_client_socket_pool_unittest.cc
@@ -1,4 +1,4 @@
-// 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.
@@ -54,7 +54,7 @@ class SOCKSClientSocketPoolTest : public testing::Test {
SOCKSClientSocketPoolTest()
: ignored_tcp_socket_params_(new TCPSocketParams(
- HostPortPair("proxy", 80), MEDIUM, GURL(), false)),
+ HostPortPair("proxy", 80), MEDIUM, GURL(), false, false)),
tcp_histograms_("MockTCP"),
tcp_socket_pool_(
kMaxSockets, kMaxSocketsPerGroup,
diff --git a/net/socket/ssl_client_socket_pool.cc b/net/socket/ssl_client_socket_pool.cc
index cbd87af..8d470d2 100644
--- a/net/socket/ssl_client_socket_pool.cc
+++ b/net/socket/ssl_client_socket_pool.cc
@@ -1,4 +1,4 @@
-// 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.
@@ -45,18 +45,21 @@ SSLSocketParams::SSLSocketParams(
DCHECK(tcp_params_.get() != NULL);
DCHECK(http_proxy_params_.get() == NULL);
DCHECK(socks_params_.get() == NULL);
+ ignore_limits_ = tcp_params_->ignore_limits();
break;
case ProxyServer::SCHEME_HTTP:
case ProxyServer::SCHEME_HTTPS:
DCHECK(tcp_params_.get() == NULL);
DCHECK(http_proxy_params_.get() != NULL);
DCHECK(socks_params_.get() == NULL);
+ ignore_limits_ = http_proxy_params_->ignore_limits();
break;
case ProxyServer::SCHEME_SOCKS4:
case ProxyServer::SCHEME_SOCKS5:
DCHECK(tcp_params_.get() == NULL);
DCHECK(http_proxy_params_.get() == NULL);
DCHECK(socks_params_.get() != NULL);
+ ignore_limits_ = socks_params_->ignore_limits();
break;
default:
LOG(DFATAL) << "unknown proxy type";
diff --git a/net/socket/ssl_client_socket_pool.h b/net/socket/ssl_client_socket_pool.h
index fdec6d6..c0fbd589 100644
--- a/net/socket/ssl_client_socket_pool.h
+++ b/net/socket/ssl_client_socket_pool.h
@@ -65,6 +65,7 @@ class SSLSocketParams : public base::RefCounted<SSLSocketParams> {
int load_flags() const { return load_flags_; }
bool force_spdy_over_ssl() const { return force_spdy_over_ssl_; }
bool want_spdy_over_npn() const { return want_spdy_over_npn_; }
+ bool ignore_limits() const { return ignore_limits_; }
private:
friend class base::RefCounted<SSLSocketParams>;
@@ -79,6 +80,7 @@ class SSLSocketParams : public base::RefCounted<SSLSocketParams> {
const int load_flags_;
const bool force_spdy_over_ssl_;
const bool want_spdy_over_npn_;
+ bool ignore_limits_;
DISALLOW_COPY_AND_ASSIGN(SSLSocketParams);
};
diff --git a/net/socket/ssl_client_socket_pool_unittest.cc b/net/socket/ssl_client_socket_pool_unittest.cc
index 4c1585d..e5dc2d5 100644
--- a/net/socket/ssl_client_socket_pool_unittest.cc
+++ b/net/socket/ssl_client_socket_pool_unittest.cc
@@ -1,4 +1,4 @@
-// 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.
@@ -44,7 +44,7 @@ class SSLClientSocketPoolTest : public testing::Test {
&host_resolver_)),
session_(CreateNetworkSession()),
direct_tcp_socket_params_(new TCPSocketParams(
- HostPortPair("host", 443), MEDIUM, GURL(), false)),
+ HostPortPair("host", 443), MEDIUM, GURL(), false, false)),
tcp_histograms_("MockTCP"),
tcp_socket_pool_(
kMaxSockets,
@@ -52,7 +52,7 @@ class SSLClientSocketPoolTest : public testing::Test {
&tcp_histograms_,
&socket_factory_),
proxy_tcp_socket_params_(new TCPSocketParams(
- HostPortPair("proxy", 443), MEDIUM, GURL(), false)),
+ HostPortPair("proxy", 443), MEDIUM, GURL(), false, false)),
socks_socket_params_(new SOCKSSocketParams(
proxy_tcp_socket_params_, true, HostPortPair("sockshost", 443),
MEDIUM, GURL())),
diff --git a/net/socket/tcp_client_socket_pool.cc b/net/socket/tcp_client_socket_pool.cc
index 716c798..fa6e2ef 100644
--- a/net/socket/tcp_client_socket_pool.cc
+++ b/net/socket/tcp_client_socket_pool.cc
@@ -1,4 +1,4 @@
-// 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.
@@ -23,8 +23,9 @@ namespace net {
TCPSocketParams::TCPSocketParams(const HostPortPair& host_port_pair,
RequestPriority priority, const GURL& referrer,
- bool disable_resolver_cache)
- : destination_(host_port_pair) {
+ bool disable_resolver_cache,
+ bool ignore_limits)
+ : destination_(host_port_pair), ignore_limits_(ignore_limits) {
Initialize(priority, referrer, disable_resolver_cache);
}
diff --git a/net/socket/tcp_client_socket_pool.h b/net/socket/tcp_client_socket_pool.h
index 8dca04b..d07ea60 100644
--- a/net/socket/tcp_client_socket_pool.h
+++ b/net/socket/tcp_client_socket_pool.h
@@ -26,9 +26,11 @@ class ClientSocketFactory;
class TCPSocketParams : public base::RefCounted<TCPSocketParams> {
public:
TCPSocketParams(const HostPortPair& host_port_pair, RequestPriority priority,
- const GURL& referrer, bool disable_resolver_cache);
+ const GURL& referrer, bool disable_resolver_cache,
+ bool ignore_limits);
const HostResolver::RequestInfo& destination() const { return destination_; }
+ bool ignore_limits() const { return ignore_limits_; }
private:
friend class base::RefCounted<TCPSocketParams>;
@@ -38,6 +40,7 @@ class TCPSocketParams : public base::RefCounted<TCPSocketParams> {
bool disable_resolver_cache);
HostResolver::RequestInfo destination_;
+ bool ignore_limits_;
DISALLOW_COPY_AND_ASSIGN(TCPSocketParams);
};
diff --git a/net/socket/tcp_client_socket_pool_unittest.cc b/net/socket/tcp_client_socket_pool_unittest.cc
index a8d496f..18314e3 100644
--- a/net/socket/tcp_client_socket_pool_unittest.cc
+++ b/net/socket/tcp_client_socket_pool_unittest.cc
@@ -1,4 +1,4 @@
-// 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.
@@ -290,9 +290,9 @@ class TCPClientSocketPoolTest : public testing::Test {
protected:
TCPClientSocketPoolTest()
: params_(new TCPSocketParams(HostPortPair("www.google.com", 80),
- kDefaultPriority, GURL(), false)),
+ kDefaultPriority, GURL(), false, false)),
low_params_(new TCPSocketParams(HostPortPair("www.google.com", 80),
- LOW, GURL(), false)),
+ LOW, GURL(), false, false)),
histograms_(new ClientSocketPoolHistograms("TCPUnitTest")),
host_resolver_(new MockHostResolver),
pool_(kMaxSockets,
@@ -305,7 +305,7 @@ class TCPClientSocketPoolTest : public testing::Test {
int StartRequest(const std::string& group_name, RequestPriority priority) {
scoped_refptr<TCPSocketParams> params(new TCPSocketParams(
- HostPortPair("www.google.com", 80), MEDIUM, GURL(), false));
+ HostPortPair("www.google.com", 80), MEDIUM, GURL(), false, false));
return test_base_.StartRequestUsingPool(
&pool_, group_name, priority, params);
}
@@ -355,7 +355,7 @@ TEST_F(TCPClientSocketPoolTest, InitHostResolutionFailure) {
ClientSocketHandle handle;
HostPortPair host_port_pair("unresolvable.host.name", 80);
scoped_refptr<TCPSocketParams> dest(new TCPSocketParams(
- host_port_pair, kDefaultPriority, GURL(), false));
+ host_port_pair, kDefaultPriority, GURL(), false, false));
EXPECT_EQ(ERR_IO_PENDING,
handle.Init("a", dest, kDefaultPriority, &callback, &pool_,
BoundNetLog()));
@@ -614,7 +614,7 @@ class RequestSocketCallback : public CallbackRunner< Tuple1<int> > {
}
within_callback_ = true;
scoped_refptr<TCPSocketParams> dest(new TCPSocketParams(
- HostPortPair("www.google.com", 80), LOWEST, GURL(), false));
+ HostPortPair("www.google.com", 80), LOWEST, GURL(), false, false));
int rv = handle_->Init("a", dest, LOWEST, this, pool_, BoundNetLog());
EXPECT_EQ(OK, rv);
}
@@ -635,7 +635,7 @@ TEST_F(TCPClientSocketPoolTest, RequestTwice) {
ClientSocketHandle handle;
RequestSocketCallback callback(&handle, &pool_);
scoped_refptr<TCPSocketParams> dest(new TCPSocketParams(
- HostPortPair("www.google.com", 80), LOWEST, GURL(), false));
+ HostPortPair("www.google.com", 80), LOWEST, GURL(), false, false));
int rv = handle.Init("a", dest, LOWEST, &callback, &pool_,
BoundNetLog());
ASSERT_EQ(ERR_IO_PENDING, rv);
diff --git a/net/spdy/spdy_http_stream_unittest.cc b/net/spdy/spdy_http_stream_unittest.cc
index 730c5cc..48360fe 100644
--- a/net/spdy/spdy_http_stream_unittest.cc
+++ b/net/spdy/spdy_http_stream_unittest.cc
@@ -1,4 +1,4 @@
-// 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.
@@ -31,7 +31,7 @@ class SpdyHttpStreamTest : public testing::Test {
http_session_ = SpdySessionDependencies::SpdyCreateSession(&session_deps_);
session_ = http_session_->spdy_session_pool()->Get(pair, BoundNetLog());
tcp_params_ = new TCPSocketParams(host_port_pair,
- MEDIUM, GURL(), false);
+ MEDIUM, GURL(), false, false);
TestCompletionCallback callback;
scoped_ptr<ClientSocketHandle> connection(new ClientSocketHandle);
EXPECT_EQ(ERR_IO_PENDING,
diff --git a/net/spdy/spdy_proxy_client_socket_unittest.cc b/net/spdy/spdy_proxy_client_socket_unittest.cc
index 9023ca9..33fc667 100644
--- a/net/spdy/spdy_proxy_client_socket_unittest.cc
+++ b/net/spdy/spdy_proxy_client_socket_unittest.cc
@@ -1,4 +1,4 @@
-// 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.
@@ -142,7 +142,8 @@ SpdyProxyClientSocketTest::SpdyProxyClientSocketTest()
endpoint_host_port_pair_(kOriginHost, kOriginPort),
proxy_(ProxyServer::SCHEME_HTTPS, proxy_host_port_),
endpoint_host_port_proxy_pair_(endpoint_host_port_pair_, proxy_),
- tcp_params_(new TCPSocketParams(proxy_host_port_, LOWEST, url_, false)) {
+ tcp_params_(new TCPSocketParams(proxy_host_port_, LOWEST, url_, false,
+ false)) {
}
void SpdyProxyClientSocketTest::TearDown() {
diff --git a/net/spdy/spdy_session_unittest.cc b/net/spdy/spdy_session_unittest.cc
index 473ec60..6a74a0d 100644
--- a/net/spdy/spdy_session_unittest.cc
+++ b/net/spdy/spdy_session_unittest.cc
@@ -1,4 +1,4 @@
-// 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.
@@ -92,7 +92,7 @@ TEST_F(SpdySessionTest, GoAway) {
EXPECT_TRUE(spdy_session_pool->HasSession(pair));
scoped_refptr<TCPSocketParams> tcp_params(
- new TCPSocketParams(test_host_port_pair, MEDIUM, GURL(), false));
+ new TCPSocketParams(test_host_port_pair, MEDIUM, GURL(), false, false));
scoped_ptr<ClientSocketHandle> connection(new ClientSocketHandle);
EXPECT_EQ(OK,
connection->Init(test_host_port_pair.ToString(), tcp_params, MEDIUM,
@@ -199,7 +199,7 @@ TEST_F(SpdySessionTest, OnSettings) {
ASSERT_TRUE(spdy_session_pool->HasSession(pair));
scoped_refptr<TCPSocketParams> tcp_params(
- new TCPSocketParams(test_host_port_pair, MEDIUM, GURL(), false));
+ new TCPSocketParams(test_host_port_pair, MEDIUM, GURL(), false, false));
scoped_ptr<ClientSocketHandle> connection(new ClientSocketHandle);
EXPECT_EQ(OK,
connection->Init(test_host_port_pair.ToString(), tcp_params, MEDIUM,
@@ -280,7 +280,7 @@ TEST_F(SpdySessionTest, CancelPendingCreateStream) {
ASSERT_TRUE(spdy_session_pool->HasSession(pair));
scoped_refptr<TCPSocketParams> tcp_params(
- new TCPSocketParams(test_host_port_pair, MEDIUM, GURL(), false));
+ new TCPSocketParams(test_host_port_pair, MEDIUM, GURL(), false, false));
scoped_ptr<ClientSocketHandle> connection(new ClientSocketHandle);
EXPECT_EQ(OK,
connection->Init(test_host_port_pair.ToString(), tcp_params, MEDIUM,
@@ -375,7 +375,7 @@ TEST_F(SpdySessionTest, SendSettingsOnNewSession) {
EXPECT_TRUE(spdy_session_pool->HasSession(pair));
scoped_refptr<TCPSocketParams> tcp_params(
- new TCPSocketParams(test_host_port_pair, MEDIUM, GURL(), false));
+ new TCPSocketParams(test_host_port_pair, MEDIUM, GURL(), false, false));
scoped_ptr<ClientSocketHandle> connection(new ClientSocketHandle);
EXPECT_EQ(OK,
connection->Init(test_host_port_pair.ToString(), tcp_params, MEDIUM,
@@ -443,6 +443,7 @@ TEST_F(SpdySessionTest, IPPooling) {
new TCPSocketParams(test_host_port_pair,
MEDIUM,
GURL(),
+ false,
false));
scoped_ptr<ClientSocketHandle> connection(new ClientSocketHandle);
EXPECT_EQ(OK,
diff --git a/net/spdy/spdy_stream_unittest.cc b/net/spdy/spdy_stream_unittest.cc
index 327d197..e7e8c86 100644
--- a/net/spdy/spdy_stream_unittest.cc
+++ b/net/spdy/spdy_stream_unittest.cc
@@ -198,7 +198,7 @@ TEST_F(SpdyStreamTest, SendDataAfterOpen) {
HostPortPair host_port_pair("www.google.com", 80);
scoped_refptr<TCPSocketParams> tcp_params(
- new TCPSocketParams(host_port_pair, LOWEST, GURL(), false));
+ new TCPSocketParams(host_port_pair, LOWEST, GURL(), false, false));
scoped_ptr<ClientSocketHandle> connection(new ClientSocketHandle);
EXPECT_EQ(OK,