Chromium Code Reviews| Index: net/socket/client_socket_pool_manager.cc |
| =================================================================== |
| --- net/socket/client_socket_pool_manager.cc (revision 80449) |
| +++ net/socket/client_socket_pool_manager.cc (working copy) |
| @@ -21,6 +21,8 @@ |
| #include "net/socket/client_socket_factory.h" |
| #include "net/socket/client_socket_handle.h" |
| #include "net/socket/client_socket_pool_histograms.h" |
| +#include "net/socket/sctp_client_socket_pool.h" |
| +#include "net/socket/sctp_support.h" |
| #include "net/socket/socks_client_socket_pool.h" |
| #include "net/socket/ssl_client_socket_pool.h" |
| #include "net/socket/tcp_client_socket_pool.h" |
| @@ -70,11 +72,16 @@ |
| ClientSocketHandle* socket_handle, |
| CompletionCallback* callback) { |
| scoped_refptr<TCPSocketParams> tcp_params; |
| + scoped_refptr<SCTPSocketParams> sctp_params; |
| scoped_refptr<HttpProxySocketParams> http_proxy_params; |
| scoped_refptr<SOCKSSocketParams> socks_params; |
| scoped_ptr<HostPortPair> proxy_host_port; |
| bool using_ssl = request_info.url.SchemeIs("https") || force_spdy_over_ssl; |
| + if (using_ssl && sctp_enabled()) { |
| + printf("InitSocketPoolHelper: forcing using_ssl = false\n"); |
|
Mike Belshe
2011/04/06 18:32:53
nix this
|
| + using_ssl = false; |
| + } |
| HostPortPair origin_host_port = |
| HostPortPair(request_info.url.HostNoBrackets(), |
| @@ -98,11 +105,19 @@ |
| 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, |
| - ignore_limits); |
| + if (sctp_enabled()) { |
| + sctp_params = new SCTPSocketParams(origin_host_port, |
| + request_info.priority, |
| + request_info.referrer, |
| + disable_resolver_cache, |
| + ignore_limits); |
| + } else { |
| + tcp_params = new TCPSocketParams(origin_host_port, |
| + request_info.priority, |
| + request_info.referrer, |
| + disable_resolver_cache, |
| + ignore_limits); |
| + } |
| } else { |
| ProxyServer proxy_server = proxy_info.proxy_server(); |
| proxy_host_port.reset(new HostPortPair(proxy_server.host_port_pair())); |
| @@ -220,16 +235,29 @@ |
| DCHECK(proxy_info.is_direct()); |
| - TCPClientSocketPool* pool = session->tcp_socket_pool(); |
| - if (num_preconnect_streams) { |
| - RequestSocketsForPool(pool, connection_group, tcp_params, |
| - num_preconnect_streams, net_log); |
| - return OK; |
| + if (sctp_enabled()) { |
| + SCTPClientSocketPool* pool = session->sctp_socket_pool(); |
| + if (num_preconnect_streams) { |
| + RequestSocketsForPool(pool, connection_group, sctp_params, |
| + num_preconnect_streams, net_log); |
| + return OK; |
| + } |
| + |
| + return socket_handle->Init(connection_group, sctp_params, |
| + request_info.priority, callback, |
| + pool, net_log); |
| + } else { |
| + TCPClientSocketPool* pool = session->tcp_socket_pool(); |
| + if (num_preconnect_streams) { |
| + RequestSocketsForPool(pool, connection_group, tcp_params, |
| + num_preconnect_streams, net_log); |
| + return OK; |
| + } |
| + |
| + return socket_handle->Init(connection_group, tcp_params, |
| + request_info.priority, callback, |
| + pool, net_log); |
| } |
| - |
| - return socket_handle->Init(connection_group, tcp_params, |
| - request_info.priority, callback, |
| - pool, net_log); |
| } |
| } // namespace |
| @@ -260,6 +288,13 @@ |
| host_resolver, |
| socket_factory_, |
| net_log)), |
| + sctp_pool_histograms_("SCTP"), |
| + sctp_socket_pool_(new SCTPClientSocketPool( |
| + g_max_sockets, g_max_sockets_per_group, |
| + &sctp_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, |
| @@ -535,6 +570,8 @@ |
| // The following is a sanity check... but we should NEVER be near this value. |
| DCHECK_GT(100, socket_count); |
| g_max_sockets_per_group = socket_count; |
| + // TODO(jtl): Remove this - it's only used for testing SCTP. |
| + g_max_sockets_per_group = 1; |
|
Mike Belshe
2011/04/06 18:32:53
can this be
if (sctp_enabled())
g_max_sock
|
| DCHECK_GE(g_max_sockets, g_max_sockets_per_group); |
| DCHECK_GE(g_max_sockets_per_proxy_server, g_max_sockets_per_group); |