Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(35)

Unified Diff: net/quic/core/quic_spdy_session.cc

Issue 2547583002: Landing Recent QUIC changes until Fri Nov 18 23:21:04 2016 +0000 (Closed)
Patch Set: Remove explicit HTTP/2 enum usage Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/quic/core/quic_simple_buffer_allocator_test.cc ('k') | net/quic/core/quic_spdy_stream.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/quic/core/quic_spdy_session.cc
diff --git a/net/quic/core/quic_spdy_session.cc b/net/quic/core/quic_spdy_session.cc
index 444c35c45bc49ac3b37fb5db0f0a486829c96a82..b2bb42ffca2a7efdfb03bc0c757f530cc05e6fe8 100644
--- a/net/quic/core/quic_spdy_session.cc
+++ b/net/quic/core/quic_spdy_session.cc
@@ -121,12 +121,24 @@ void QuicSpdySession::OnConfigNegotiated() {
if (FLAGS_quic_enable_force_hol_blocking && version > QUIC_VERSION_35 &&
config()->ForceHolBlocking(perspective())) {
force_hol_blocking_ = true;
- // Autotuning makes sure that the headers stream flow control does
- // not get in the way, and normal stream and connection level flow
- // control are active anyway. This is really only for the client
- // side (and mainly there just in tests and toys), where
- // autotuning and/or large buffers are not enabled by default.
- headers_stream_->flow_controller()->set_auto_tune_receive_window(true);
+ if (!FLAGS_quic_bugfix_fhol_writev_fin_only_v2) {
+ // Autotuning makes sure that the headers stream flow control does
+ // not get in the way, and normal stream and connection level flow
+ // control are active anyway. This is really only for the client
+ // side (and mainly there just in tests and toys), where
+ // autotuning and/or large buffers are not enabled by default.
+ headers_stream_->flow_controller()->set_auto_tune_receive_window(true);
+ } else {
+ // Since all streams are tunneled through the headers stream, it
+ // is important that headers stream never flow control blocks.
+ // Otherwise, busy-loop behaviour can ensue where data streams
+ // data try repeatedly to write data not realizing that the
+ // tunnel through the headers stream is blocked.
+ headers_stream_->flow_controller()->UpdateReceiveWindowSize(
+ kStreamReceiveWindowLimit);
+ headers_stream_->flow_controller()->UpdateSendWindowOffset(
+ kStreamReceiveWindowLimit);
+ }
}
if (version > QUIC_VERSION_34) {
« no previous file with comments | « net/quic/core/quic_simple_buffer_allocator_test.cc ('k') | net/quic/core/quic_spdy_stream.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698