summaryrefslogtreecommitdiffstats
path: root/net/spdy/spdy_session.cc
diff options
context:
space:
mode:
authoragayev@chromium.org <agayev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-26 02:38:28 +0000
committeragayev@chromium.org <agayev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-26 02:38:28 +0000
commit450c50209ee3bfddef034f09d8a6fa3c47d979d9 (patch)
treeb100647c723cd54e969d2585c9186be63b55b07e /net/spdy/spdy_session.cc
parentc2b161b89c8a68d823a9f67ece5e4b000885094c (diff)
downloadchromium_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.cc16
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());