diff options
author | agayev@chromium.org <agayev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-26 02:38:28 +0000 |
---|---|---|
committer | agayev@chromium.org <agayev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-26 02:38:28 +0000 |
commit | 450c50209ee3bfddef034f09d8a6fa3c47d979d9 (patch) | |
tree | b100647c723cd54e969d2585c9186be63b55b07e /net/spdy/spdy_session.cc | |
parent | c2b161b89c8a68d823a9f67ece5e4b000885094c (diff) | |
download | chromium_src-450c50209ee3bfddef034f09d8a6fa3c47d979d9.zip chromium_src-450c50209ee3bfddef034f09d8a6fa3c47d979d9.tar.gz chromium_src-450c50209ee3bfddef034f09d8a6fa3c47d979d9.tar.bz2 |
SPDY flow control: add support for receive window size
BUG=48100
TEST=net_unittests
Review URL: http://codereview.chromium.org/3137014
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@57453 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/spdy/spdy_session.cc')
-rw-r--r-- | net/spdy/spdy_session.cc | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/net/spdy/spdy_session.cc b/net/spdy/spdy_session.cc index 64a04cc..8738a6a 100644 --- a/net/spdy/spdy_session.cc +++ b/net/spdy/spdy_session.cc @@ -172,6 +172,7 @@ SpdySession::SpdySession(const HostPortProxyPair& host_port_proxy_pair, received_settings_(false), in_session_pool_(true), initial_send_window_size_(spdy::kInitialWindowSize), + initial_recv_window_size_(spdy::kInitialWindowSize), net_log_(BoundNetLog::Make(net_log, NetLog::SOURCE_SPDY_SESSION)) { net_log_.BeginEvent( NetLog::TYPE_SPDY_SESSION, @@ -369,6 +370,7 @@ int SpdySession::CreateStreamImpl( stream->set_path(path); stream->set_net_log(stream_net_log); stream->set_send_window_size(initial_send_window_size_); + stream->set_recv_window_size(initial_recv_window_size_); ActivateStream(stream); UMA_HISTOGRAM_CUSTOM_COUNTS("Net.SpdyPriorityCount", @@ -1255,6 +1257,20 @@ void SpdySession::OnWindowUpdate( stream->IncreaseSendWindowSize(delta_window_size); } +void SpdySession::SendWindowUpdate(spdy::SpdyStreamId stream_id, + int delta_window_size) { + DCHECK(IsStreamActive(stream_id)); + scoped_refptr<SpdyStream> stream = active_streams_[stream_id]; + CHECK_EQ(stream->stream_id(), stream_id); + + LOG(INFO) << "Sending a WINDOW_UPDATE frame for stream " << stream_id + << " with delta window size " << delta_window_size; + + scoped_ptr<spdy::SpdyWindowUpdateControlFrame> window_update_frame( + spdy_framer_.CreateWindowUpdate(stream_id, delta_window_size)); + QueueFrame(window_update_frame.get(), stream->priority(), stream); +} + void SpdySession::SendSettings() { const SpdySettingsStorage& settings_storage = session_->spdy_settings(); const spdy::SpdySettings& settings = settings_storage.Get(host_port_pair()); |