Chromium Code Reviews| Index: net/spdy/spdy_session.cc |
| diff --git a/net/spdy/spdy_session.cc b/net/spdy/spdy_session.cc |
| index db791e466b125387d1b4eb028e13d0de20803628..92fc40f42bfa8cdf03198e9d80c0361600d93490 100644 |
| --- a/net/spdy/spdy_session.cc |
| +++ b/net/spdy/spdy_session.cc |
| @@ -660,6 +660,7 @@ SpdySession::SpdySession( |
| : stream_initial_recv_window_size), |
| session_send_window_size_(0), |
| session_recv_window_size_(0), |
| + session_max_recv_window_size_(0), |
| session_unacked_recv_window_bytes_(0), |
| net_log_(BoundNetLog::Make(net_log, NetLog::SOURCE_HTTP2_SESSION)), |
| verify_domain_authentication_(verify_domain_authentication), |
| @@ -738,6 +739,7 @@ void SpdySession::InitializeWithSocket( |
| flow_control_state_ = FLOW_CONTROL_STREAM_AND_SESSION; |
| session_send_window_size_ = GetInitialWindowSize(protocol_); |
| session_recv_window_size_ = GetInitialWindowSize(protocol_); |
| + session_max_recv_window_size_ = GetInitialWindowSize(protocol_); |
| } else if (protocol_ >= kProtoSPDY3) { |
| flow_control_state_ = FLOW_CONTROL_STREAM; |
| } else { |
| @@ -2793,8 +2795,9 @@ void SpdySession::SendInitialData() { |
| // This condition implies that |kDefaultInitialRecvWindowSize| - |
| // |session_recv_window_size_| doesn't overflow. |
| DCHECK_GT(session_recv_window_size_, 0); |
| - IncreaseRecvWindowSize( |
| - kDefaultInitialRecvWindowSize - session_recv_window_size_); |
| + session_max_recv_window_size_ = kDefaultInitialRecvWindowSize; |
| + IncreaseRecvWindowSize(session_max_recv_window_size_ - |
| + session_recv_window_size_); |
| } |
| if (protocol_ <= kProtoSPDY31) { |
| @@ -3190,8 +3193,7 @@ void SpdySession::IncreaseRecvWindowSize(int32 delta_window_size) { |
| delta_window_size, session_recv_window_size_)); |
| session_unacked_recv_window_bytes_ += delta_window_size; |
| - if (session_unacked_recv_window_bytes_ > |
| - GetInitialWindowSize(protocol_) / 2) { |
|
Ryan Hamilton
2015/04/06 16:27:05
I'm curious why this didn't work. It *looks* like
Bence
2015/04/07 12:32:16
Good question. So GetInitialWindowSize is 64 kB,
Ryan Hamilton
2015/04/07 14:56:39
Oh, that method was return the protocol default, n
|
| + if (session_unacked_recv_window_bytes_ > session_max_recv_window_size_ / 2) { |
| SendWindowUpdateFrame(kSessionFlowControlStreamId, |
| session_unacked_recv_window_bytes_, |
| HIGHEST); |