diff options
-rw-r--r-- | net/http/http_network_transaction_spdy2_unittest.cc | 8 | ||||
-rw-r--r-- | net/http/http_network_transaction_spdy3_unittest.cc | 8 | ||||
-rw-r--r-- | net/http/http_proxy_client_socket_pool_spdy2_unittest.cc | 5 | ||||
-rw-r--r-- | net/http/http_proxy_client_socket_pool_spdy3_unittest.cc | 5 | ||||
-rw-r--r-- | net/spdy/spdy_session.cc | 26 | ||||
-rw-r--r-- | net/spdy/spdy_session.h | 7 | ||||
-rw-r--r-- | net/spdy/spdy_session_pool.cc | 3 | ||||
-rw-r--r-- | net/spdy/spdy_session_pool.h | 2 | ||||
-rw-r--r-- | net/spdy/spdy_session_spdy2_unittest.cc | 62 | ||||
-rw-r--r-- | net/spdy/spdy_session_spdy3_unittest.cc | 9 | ||||
-rw-r--r-- | net/spdy/spdy_test_util_spdy2.cc | 12 | ||||
-rw-r--r-- | net/spdy/spdy_test_util_spdy2.h | 4 | ||||
-rw-r--r-- | net/spdy/spdy_test_util_spdy3.cc | 12 | ||||
-rw-r--r-- | net/spdy/spdy_test_util_spdy3.h | 4 |
14 files changed, 146 insertions, 21 deletions
diff --git a/net/http/http_network_transaction_spdy2_unittest.cc b/net/http/http_network_transaction_spdy2_unittest.cc index 838c54f..eb3a80f 100644 --- a/net/http/http_network_transaction_spdy2_unittest.cc +++ b/net/http/http_network_transaction_spdy2_unittest.cc @@ -179,7 +179,10 @@ HttpNetworkSession* CreateSession(SessionDependencies* session_deps) { params.http_server_properties = &session_deps->http_server_properties; params.net_log = session_deps->net_log; params.trusted_spdy_proxy = session_deps->trusted_spdy_proxy; - return new HttpNetworkSession(params); + HttpNetworkSession* http_session = new HttpNetworkSession(params); + SpdySessionPoolPeer pool_peer(http_session->spdy_session_pool()); + pool_peer.EnableSendingInitialSettings(false); + return http_session; } } // namespace @@ -9424,6 +9427,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, MAYBE_UseIPConnectionPooling) { scoped_refptr<HttpNetworkSession> session(new HttpNetworkSession(params)); SpdySessionPoolPeer pool_peer(session->spdy_session_pool()); pool_peer.DisableDomainAuthenticationVerification(); + pool_peer.EnableSendingInitialSettings(false); SSLSocketDataProvider ssl(ASYNC, OK); ssl.SetNextProto(kProtoSPDY2); @@ -9534,6 +9538,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, UseIPConnectionPoolingAfterResolution) { scoped_refptr<HttpNetworkSession> session(new HttpNetworkSession(params)); SpdySessionPoolPeer pool_peer(session->spdy_session_pool()); pool_peer.DisableDomainAuthenticationVerification(); + pool_peer.EnableSendingInitialSettings(false); SSLSocketDataProvider ssl(ASYNC, OK); ssl.SetNextProto(kProtoSPDY2); @@ -9680,6 +9685,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, scoped_refptr<HttpNetworkSession> session(new HttpNetworkSession(params)); SpdySessionPoolPeer pool_peer(session->spdy_session_pool()); pool_peer.DisableDomainAuthenticationVerification(); + pool_peer.EnableSendingInitialSettings(false); SSLSocketDataProvider ssl(ASYNC, OK); ssl.SetNextProto(kProtoSPDY2); diff --git a/net/http/http_network_transaction_spdy3_unittest.cc b/net/http/http_network_transaction_spdy3_unittest.cc index 84bd7d3..36f0b2b 100644 --- a/net/http/http_network_transaction_spdy3_unittest.cc +++ b/net/http/http_network_transaction_spdy3_unittest.cc @@ -164,7 +164,10 @@ HttpNetworkSession* CreateSession(SessionDependencies* session_deps) { params.http_server_properties = &session_deps->http_server_properties; params.net_log = session_deps->net_log; params.trusted_spdy_proxy = session_deps->trusted_spdy_proxy; - return new HttpNetworkSession(params); + HttpNetworkSession* http_session = new HttpNetworkSession(params); + SpdySessionPoolPeer pool_peer(http_session->spdy_session_pool()); + pool_peer.EnableSendingInitialSettings(false); + return http_session; } // Takes in a Value created from a NetLogHttpResponseParameter, and returns @@ -9416,6 +9419,7 @@ TEST_F(HttpNetworkTransactionSpdy3Test, UseIPConnectionPooling) { scoped_refptr<HttpNetworkSession> session(new HttpNetworkSession(params)); SpdySessionPoolPeer pool_peer(session->spdy_session_pool()); pool_peer.DisableDomainAuthenticationVerification(); + pool_peer.EnableSendingInitialSettings(false); SSLSocketDataProvider ssl(ASYNC, OK); ssl.SetNextProto(kProtoSPDY3); @@ -9525,6 +9529,7 @@ TEST_F(HttpNetworkTransactionSpdy3Test, UseIPConnectionPoolingAfterResolution) { scoped_refptr<HttpNetworkSession> session(new HttpNetworkSession(params)); SpdySessionPoolPeer pool_peer(session->spdy_session_pool()); pool_peer.DisableDomainAuthenticationVerification(); + pool_peer.EnableSendingInitialSettings(false); SSLSocketDataProvider ssl(ASYNC, OK); ssl.SetNextProto(kProtoSPDY3); @@ -9665,6 +9670,7 @@ TEST_F(HttpNetworkTransactionSpdy3Test, scoped_refptr<HttpNetworkSession> session(new HttpNetworkSession(params)); SpdySessionPoolPeer pool_peer(session->spdy_session_pool()); pool_peer.DisableDomainAuthenticationVerification(); + pool_peer.EnableSendingInitialSettings(false); SSLSocketDataProvider ssl(ASYNC, OK); ssl.SetNextProto(kProtoSPDY3); diff --git a/net/http/http_proxy_client_socket_pool_spdy2_unittest.cc b/net/http/http_proxy_client_socket_pool_spdy2_unittest.cc index 5f7a8e0..6bd4ce7 100644 --- a/net/http/http_proxy_client_socket_pool_spdy2_unittest.cc +++ b/net/http/http_proxy_client_socket_pool_spdy2_unittest.cc @@ -189,7 +189,10 @@ class HttpProxyClientSocketPoolSpdy2Test : public TestWithHttpParam { params.ssl_config_service = ssl_config_service_; params.http_auth_handler_factory = http_auth_handler_factory_.get(); params.http_server_properties = &http_server_properties_; - return new HttpNetworkSession(params); + HttpNetworkSession* session = new HttpNetworkSession(params); + SpdySessionPoolPeer pool_peer(session->spdy_session_pool()); + pool_peer.EnableSendingInitialSettings(false); + return session; } private: diff --git a/net/http/http_proxy_client_socket_pool_spdy3_unittest.cc b/net/http/http_proxy_client_socket_pool_spdy3_unittest.cc index bc0c62a..9d13298 100644 --- a/net/http/http_proxy_client_socket_pool_spdy3_unittest.cc +++ b/net/http/http_proxy_client_socket_pool_spdy3_unittest.cc @@ -189,7 +189,10 @@ class HttpProxyClientSocketPoolSpdy3Test : public TestWithHttpParam { params.ssl_config_service = ssl_config_service_; params.http_auth_handler_factory = http_auth_handler_factory_.get(); params.http_server_properties = &http_server_properties_; - return new HttpNetworkSession(params); + HttpNetworkSession* session = new HttpNetworkSession(params); + SpdySessionPoolPeer pool_peer(session->spdy_session_pool()); + pool_peer.EnableSendingInitialSettings(false); + return session; } private: diff --git a/net/spdy/spdy_session.cc b/net/spdy/spdy_session.cc index 9610c75..88474b3 100644 --- a/net/spdy/spdy_session.cc +++ b/net/spdy/spdy_session.cc @@ -189,11 +189,6 @@ void SpdySession::set_max_concurrent_streams(size_t value) { } // static -void SpdySession::set_default_initial_recv_window_size(size_t value) { - g_default_initial_rcv_window_size = value; -} - -// static void SpdySession::set_enable_ping_based_connection_checking(bool enable) { g_enable_ping_based_connection_checking = enable; } @@ -205,6 +200,11 @@ void SpdySession::set_init_max_concurrent_streams(size_t value) { } // static +void SpdySession::set_default_initial_recv_window_size(size_t value) { + g_default_initial_rcv_window_size = value; +} + +// static void SpdySession::ResetStaticSettingsToInit() { // WARNING: These must match the initializers above. g_default_protocol = kProtoUnknown; @@ -218,6 +218,7 @@ SpdySession::SpdySession(const HostPortProxyPair& host_port_proxy_pair, SpdySessionPool* spdy_session_pool, HttpServerProperties* http_server_properties, bool verify_domain_authentication, + bool enable_sending_initial_settings, const HostPortPair& trusted_spdy_proxy, NetLog* net_log) : ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)), @@ -252,6 +253,7 @@ SpdySession::SpdySession(const HostPortProxyPair& host_port_proxy_pair, initial_recv_window_size_(g_default_initial_rcv_window_size), net_log_(BoundNetLog::Make(net_log, NetLog::SOURCE_SPDY_SESSION)), verify_domain_authentication_(verify_domain_authentication), + enable_sending_initial_settings_(enable_sending_initial_settings), credential_state_(SpdyCredentialState::kDefaultNumSlots), connection_at_risk_of_loss_time_( base::TimeDelta::FromSeconds(kDefaultConnectionAtRiskOfLossSeconds)), @@ -1570,13 +1572,17 @@ uint32 ApplyCwndFieldTrialPolicy(int cwnd) { void SpdySession::SendInitialSettings() { // First notify the server about the settings they should use when // communicating with us. - if (GetProtocolVersion() > 2 && - initial_recv_window_size_ != kSpdyStreamInitialWindowSize) { + if (GetProtocolVersion() >= 2 && enable_sending_initial_settings_) { SettingsMap settings_map; // Create a new settings frame notifying the sever of our - // initial window size. - settings_map[SETTINGS_INITIAL_WINDOW_SIZE] = - SettingsFlagsAndValue(SETTINGS_FLAG_NONE, initial_recv_window_size_); + // max_concurrent_streams_ and initial window size. + settings_map[SETTINGS_MAX_CONCURRENT_STREAMS] = + SettingsFlagsAndValue(SETTINGS_FLAG_NONE, kInitialMaxConcurrentStreams); + if (GetProtocolVersion() > 2 && + initial_recv_window_size_ != kSpdyStreamInitialWindowSize) { + settings_map[SETTINGS_INITIAL_WINDOW_SIZE] = + SettingsFlagsAndValue(SETTINGS_FLAG_NONE, initial_recv_window_size_); + } sent_settings_ = true; SendSettings(settings_map); } diff --git a/net/spdy/spdy_session.h b/net/spdy/spdy_session.h index 797f139..5cdf65b 100644 --- a/net/spdy/spdy_session.h +++ b/net/spdy/spdy_session.h @@ -40,6 +40,9 @@ namespace net { const int kMss = 1430; const int kMaxSpdyFrameChunkSize = (2 * kMss) - SpdyFrame::kHeaderSize; +// Specifies the maxiumum concurrent streams server could send. +const int kInitialMaxConcurrentStreams = 1000; + class BoundNetLog; class SpdyStream; class SSLInfo; @@ -102,6 +105,7 @@ class NET_EXPORT SpdySession : public base::RefCounted<SpdySession>, SpdySessionPool* spdy_session_pool, HttpServerProperties* http_server_properties, bool verify_domain_authentication, + bool enable_sending_initial_settings, const HostPortPair& trusted_spdy_proxy, NetLog* net_log); @@ -630,8 +634,9 @@ class NET_EXPORT SpdySession : public base::RefCounted<SpdySession>, BoundNetLog net_log_; - // Outside of tests, this should always be true. + // Outside of tests, these should always be true. bool verify_domain_authentication_; + bool enable_sending_initial_settings_; SpdyCredentialState credential_state_; diff --git a/net/spdy/spdy_session_pool.cc b/net/spdy/spdy_session_pool.cc index a7c5d02..0a8eb7f 100644 --- a/net/spdy/spdy_session_pool.cc +++ b/net/spdy/spdy_session_pool.cc @@ -49,6 +49,7 @@ SpdySessionPool::SpdySessionPool( ssl_config_service_(ssl_config_service), resolver_(resolver), verify_domain_authentication_(true), + enable_sending_initial_settings_(true), trusted_spdy_proxy_( HostPortPair::FromString(trusted_spdy_proxy)) { NetworkChangeNotifier::AddIPAddressObserver(this); @@ -122,6 +123,7 @@ scoped_refptr<SpdySession> SpdySessionPool::GetInternal( spdy_session = new SpdySession(host_port_proxy_pair, this, http_server_properties_, verify_domain_authentication_, + enable_sending_initial_settings_, trusted_spdy_proxy_, net_log.net_log()); UMA_HISTOGRAM_ENUMERATION("Net.SpdySessionGet", @@ -149,6 +151,7 @@ net::Error SpdySessionPool::GetSpdySessionFromSocket( *spdy_session = new SpdySession(host_port_proxy_pair, this, http_server_properties_, verify_domain_authentication_, + enable_sending_initial_settings_, trusted_spdy_proxy_, net_log.net_log()); SpdySessionList* list = GetSessionList(host_port_proxy_pair); diff --git a/net/spdy/spdy_session_pool.h b/net/spdy/spdy_session_pool.h index 75b157c..05154f5 100644 --- a/net/spdy/spdy_session_pool.h +++ b/net/spdy/spdy_session_pool.h @@ -208,6 +208,8 @@ class NET_EXPORT SpdySessionPool // Defaults to true. May be controlled via SpdySessionPoolPeer for tests. bool verify_domain_authentication_; + bool enable_sending_initial_settings_; + // This SPDY proxy is allowed to push resources from origins that are // different from those of their associated streams. HostPortPair trusted_spdy_proxy_; diff --git a/net/spdy/spdy_session_spdy2_unittest.cc b/net/spdy/spdy_session_spdy2_unittest.cc index fd0fca20b..eb26194 100644 --- a/net/spdy/spdy_session_spdy2_unittest.cc +++ b/net/spdy/spdy_session_spdy2_unittest.cc @@ -668,6 +668,68 @@ TEST_F(SpdySessionSpdy2Test, CancelPendingCreateStream) { MessageLoop::current()->RunAllPending(); } +TEST_F(SpdySessionSpdy2Test, SendInitialSettingsOnNewSession) { + SpdySessionDependencies session_deps; + session_deps.host_resolver->set_synchronous_mode(true); + + MockRead reads[] = { + MockRead(SYNCHRONOUS, ERR_IO_PENDING) // Stall forever. + }; + + SettingsMap settings; + const SpdySettingsIds kSpdySettingsIds1 = SETTINGS_MAX_CONCURRENT_STREAMS; + settings[kSpdySettingsIds1] = + SettingsFlagsAndValue(SETTINGS_FLAG_NONE, kInitialMaxConcurrentStreams); + MockConnect connect_data(SYNCHRONOUS, OK); + scoped_ptr<SpdyFrame> settings_frame(ConstructSpdySettings(settings)); + MockWrite writes[] = { + CreateMockWrite(*settings_frame), + }; + + StaticSocketDataProvider data( + reads, arraysize(reads), writes, arraysize(writes)); + data.set_connect_data(connect_data); + session_deps.socket_factory->AddSocketDataProvider(&data); + + SSLSocketDataProvider ssl(SYNCHRONOUS, OK); + session_deps.socket_factory->AddSSLSocketDataProvider(&ssl); + + scoped_refptr<HttpNetworkSession> http_session( + SpdySessionDependencies::SpdyCreateSession(&session_deps)); + + static const char kStreamUrl[] = "http://www.google.com/"; + GURL url(kStreamUrl); + + const std::string kTestHost("www.google.com"); + const int kTestPort = 80; + HostPortPair test_host_port_pair(kTestHost, kTestPort); + HostPortProxyPair pair(test_host_port_pair, ProxyServer::Direct()); + + SpdySessionPool* spdy_session_pool(http_session->spdy_session_pool()); + EXPECT_FALSE(spdy_session_pool->HasSession(pair)); + SpdySessionPoolPeer pool_peer(spdy_session_pool); + pool_peer.EnableSendingInitialSettings(true); + scoped_refptr<SpdySession> session = + spdy_session_pool->Get(pair, BoundNetLog()); + EXPECT_TRUE(spdy_session_pool->HasSession(pair)); + + scoped_refptr<TransportSocketParams> transport_params( + new TransportSocketParams(test_host_port_pair, + MEDIUM, + false, + false, + OnHostResolutionCallback())); + scoped_ptr<ClientSocketHandle> connection(new ClientSocketHandle); + EXPECT_EQ(OK, connection->Init(test_host_port_pair.ToString(), + transport_params, MEDIUM, CompletionCallback(), + http_session->GetTransportSocketPool( + HttpNetworkSession::NORMAL_SOCKET_POOL), + BoundNetLog())); + EXPECT_EQ(OK, session->InitializeWithSocket(connection.release(), false, OK)); + MessageLoop::current()->RunAllPending(); + EXPECT_TRUE(data.at_write_eof()); +} + TEST_F(SpdySessionSpdy2Test, SendSettingsOnNewSession) { SpdySessionDependencies session_deps; session_deps.host_resolver->set_synchronous_mode(true); diff --git a/net/spdy/spdy_session_spdy3_unittest.cc b/net/spdy/spdy_session_spdy3_unittest.cc index b43dc4b..3b8a10f 100644 --- a/net/spdy/spdy_session_spdy3_unittest.cc +++ b/net/spdy/spdy_session_spdy3_unittest.cc @@ -668,7 +668,7 @@ TEST_F(SpdySessionSpdy3Test, CancelPendingCreateStream) { MessageLoop::current()->RunAllPending(); } -TEST_F(SpdySessionSpdy3Test, SendInitialWindowSizeSettingsOnNewSession) { +TEST_F(SpdySessionSpdy3Test, SendInitialSettingsOnNewSession) { SpdySessionDependencies session_deps; session_deps.host_resolver->set_synchronous_mode(true); @@ -677,9 +677,12 @@ TEST_F(SpdySessionSpdy3Test, SendInitialWindowSizeSettingsOnNewSession) { }; SettingsMap settings; - const SpdySettingsIds kSpdySettingsIds1 = SETTINGS_INITIAL_WINDOW_SIZE; + const SpdySettingsIds kSpdySettingsIds1 = SETTINGS_MAX_CONCURRENT_STREAMS; + const SpdySettingsIds kSpdySettingsIds2 = SETTINGS_INITIAL_WINDOW_SIZE; const uint32 kInitialRecvWindowSize = 10 * 1024 * 1024; settings[kSpdySettingsIds1] = + SettingsFlagsAndValue(SETTINGS_FLAG_NONE, kInitialMaxConcurrentStreams); + settings[kSpdySettingsIds2] = SettingsFlagsAndValue(SETTINGS_FLAG_NONE, kInitialRecvWindowSize); MockConnect connect_data(SYNCHRONOUS, OK); scoped_ptr<SpdyFrame> settings_frame(ConstructSpdySettings(settings)); @@ -709,6 +712,8 @@ TEST_F(SpdySessionSpdy3Test, SendInitialWindowSizeSettingsOnNewSession) { SpdySessionPool* spdy_session_pool(http_session->spdy_session_pool()); EXPECT_FALSE(spdy_session_pool->HasSession(pair)); + SpdySessionPoolPeer pool_peer(spdy_session_pool); + pool_peer.EnableSendingInitialSettings(true); scoped_refptr<SpdySession> session = spdy_session_pool->Get(pair, BoundNetLog()); EXPECT_TRUE(spdy_session_pool->HasSession(pair)); diff --git a/net/spdy/spdy_test_util_spdy2.cc b/net/spdy/spdy_test_util_spdy2.cc index b933377..1c08f33f 100644 --- a/net/spdy/spdy_test_util_spdy2.cc +++ b/net/spdy/spdy_test_util_spdy2.cc @@ -941,7 +941,10 @@ HttpNetworkSession* SpdySessionDependencies::SpdyCreateSession( params.http_server_properties = &session_deps->http_server_properties; params.trusted_spdy_proxy = session_deps->trusted_spdy_proxy; - return new HttpNetworkSession(params); + HttpNetworkSession* http_session = new HttpNetworkSession(params); + SpdySessionPoolPeer pool_peer(http_session->spdy_session_pool()); + pool_peer.EnableSendingInitialSettings(false); + return http_session; } // static @@ -957,7 +960,10 @@ HttpNetworkSession* SpdySessionDependencies::SpdyCreateSessionDeterministic( params.http_auth_handler_factory = session_deps->http_auth_handler_factory.get(); params.http_server_properties = &session_deps->http_server_properties; - return new HttpNetworkSession(params); + HttpNetworkSession* http_session = new HttpNetworkSession(params); + SpdySessionPoolPeer pool_peer(http_session->spdy_session_pool()); + pool_peer.EnableSendingInitialSettings(false); + return http_session; } SpdyURLRequestContext::SpdyURLRequestContext() @@ -980,6 +986,8 @@ SpdyURLRequestContext::SpdyURLRequestContext() params.http_server_properties = http_server_properties(); scoped_refptr<HttpNetworkSession> network_session( new HttpNetworkSession(params)); + SpdySessionPoolPeer pool_peer(network_session->spdy_session_pool()); + pool_peer.EnableSendingInitialSettings(false); storage_.set_http_transaction_factory(new HttpCache( network_session, HttpCache::DefaultBackend::InMemory(0))); diff --git a/net/spdy/spdy_test_util_spdy2.h b/net/spdy/spdy_test_util_spdy2.h index 03b70d87..0f84a9e 100644 --- a/net/spdy/spdy_test_util_spdy2.h +++ b/net/spdy/spdy_test_util_spdy2.h @@ -405,6 +405,10 @@ class SpdySessionPoolPeer { pool_->verify_domain_authentication_ = false; } + void EnableSendingInitialSettings(bool enabled) { + pool_->enable_sending_initial_settings_ = enabled; + } + private: SpdySessionPool* const pool_; diff --git a/net/spdy/spdy_test_util_spdy3.cc b/net/spdy/spdy_test_util_spdy3.cc index e872d90..46ecee4 100644 --- a/net/spdy/spdy_test_util_spdy3.cc +++ b/net/spdy/spdy_test_util_spdy3.cc @@ -924,7 +924,10 @@ HttpNetworkSession* SpdySessionDependencies::SpdyCreateSession( params.http_server_properties = &session_deps->http_server_properties; params.trusted_spdy_proxy = session_deps->trusted_spdy_proxy; - return new HttpNetworkSession(params); + HttpNetworkSession* http_session = new HttpNetworkSession(params); + SpdySessionPoolPeer pool_peer(http_session->spdy_session_pool()); + pool_peer.EnableSendingInitialSettings(false); + return http_session; } // static @@ -940,7 +943,10 @@ HttpNetworkSession* SpdySessionDependencies::SpdyCreateSessionDeterministic( params.http_auth_handler_factory = session_deps->http_auth_handler_factory.get(); params.http_server_properties = &session_deps->http_server_properties; - return new HttpNetworkSession(params); + HttpNetworkSession* http_session = new HttpNetworkSession(params); + SpdySessionPoolPeer pool_peer(http_session->spdy_session_pool()); + pool_peer.EnableSendingInitialSettings(false); + return http_session; } SpdyURLRequestContext::SpdyURLRequestContext() @@ -963,6 +969,8 @@ SpdyURLRequestContext::SpdyURLRequestContext() params.http_server_properties = http_server_properties(); scoped_refptr<HttpNetworkSession> network_session( new HttpNetworkSession(params)); + SpdySessionPoolPeer pool_peer(network_session->spdy_session_pool()); + pool_peer.EnableSendingInitialSettings(false); storage_.set_http_transaction_factory(new HttpCache( network_session, HttpCache::DefaultBackend::InMemory(0))); diff --git a/net/spdy/spdy_test_util_spdy3.h b/net/spdy/spdy_test_util_spdy3.h index 3e18077..a7ec1b4 100644 --- a/net/spdy/spdy_test_util_spdy3.h +++ b/net/spdy/spdy_test_util_spdy3.h @@ -406,6 +406,10 @@ class SpdySessionPoolPeer { pool_->verify_domain_authentication_ = false; } + void EnableSendingInitialSettings(bool enabled) { + pool_->enable_sending_initial_settings_ = enabled; + } + private: SpdySessionPool* const pool_; |