| Index: net/quic/quic_spdy_session.cc
|
| diff --git a/net/quic/quic_spdy_session.cc b/net/quic/quic_spdy_session.cc
|
| index ef0a422031cdddbe5b34b1115cd0671f6cb1844f..fe1923ac610620adba449968759a66ae21c793b1 100644
|
| --- a/net/quic/quic_spdy_session.cc
|
| +++ b/net/quic/quic_spdy_session.cc
|
| @@ -16,7 +16,7 @@ namespace net {
|
|
|
| QuicSpdySession::QuicSpdySession(QuicConnection* connection,
|
| const QuicConfig& config)
|
| - : QuicSession(connection, config) {}
|
| + : QuicSession(connection, config), force_hol_blocking_(false) {}
|
|
|
| QuicSpdySession::~QuicSpdySession() {
|
| // Set the streams' session pointers in closed and dynamic stream lists
|
| @@ -153,6 +153,32 @@ void QuicSpdySession::OnConfigNegotiated() {
|
| config()->HasClientSentConnectionOption(kDHDT, perspective())) {
|
| headers_stream_->DisableHpackDynamicTable();
|
| }
|
| + const QuicVersion version = connection()->version();
|
| + if (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);
|
| + }
|
| +}
|
| +
|
| +void QuicSpdySession::OnStreamFrameData(QuicStreamId stream_id,
|
| + const char* data,
|
| + size_t len,
|
| + bool fin) {
|
| + QuicSpdyStream* stream = GetSpdyDataStream(stream_id);
|
| + if (stream == nullptr) {
|
| + return;
|
| + }
|
| + const QuicStreamOffset offset =
|
| + stream->flow_controller()->highest_received_byte_offset();
|
| + const QuicStreamFrame frame(stream_id, fin, offset, StringPiece(data, len));
|
| + DVLOG(1) << "De-encapsulating DATA frame for stream " << stream_id
|
| + << " offset " << offset << " len " << len << " fin " << fin;
|
| + OnStreamFrame(frame);
|
| }
|
|
|
| } // namespace net
|
|
|