| Index: net/quic/core/quic_headers_stream.cc
|
| diff --git a/net/quic/core/quic_headers_stream.cc b/net/quic/core/quic_headers_stream.cc
|
| index 5b011e8cb445713dc667653959029b8760a66d70..a662c4ffea41f790cd88dd9409da825c440eb213 100644
|
| --- a/net/quic/core/quic_headers_stream.cc
|
| +++ b/net/quic/core/quic_headers_stream.cc
|
| @@ -13,6 +13,7 @@
|
| #include "net/quic/core/quic_bug_tracker.h"
|
| #include "net/quic/core/quic_flags.h"
|
| #include "net/quic/core/quic_header_list.h"
|
| +#include "net/quic/core/quic_server_session_base.h"
|
| #include "net/quic/core/quic_spdy_session.h"
|
| #include "net/quic/core/quic_time.h"
|
| #include "net/spdy/spdy_protocol.h"
|
| @@ -196,6 +197,22 @@ class QuicHeadersStream::SpdyFramerVisitor
|
| case SETTINGS_HEADER_TABLE_SIZE:
|
| stream_->UpdateHeaderEncoderTableSize(value);
|
| break;
|
| + case SETTINGS_ENABLE_PUSH:
|
| + if (FLAGS_quic_enable_server_push_by_default &&
|
| + stream_->session()->perspective() == Perspective::IS_SERVER) {
|
| + // See rfc7540, Section 6.5.2.
|
| + if (value > 1) {
|
| + CloseConnection("Invalid value for SETTINGS_ENABLE_PUSH: " +
|
| + base::IntToString(value));
|
| + return;
|
| + }
|
| + stream_->UpdateEnableServerPush(value);
|
| + break;
|
| + } else {
|
| + CloseConnection("Unsupported field of HTTP/2 SETTINGS frame: " +
|
| + base::IntToString(id));
|
| + }
|
| + break;
|
| // TODO(fayang): Need to support SETTINGS_MAX_HEADER_LIST_SIZE when
|
| // clients are actually sending it.
|
| default:
|
| @@ -593,6 +610,10 @@ void QuicHeadersStream::UpdateHeaderEncoderTableSize(uint32_t value) {
|
| spdy_framer_.UpdateHeaderEncoderTableSize(value);
|
| }
|
|
|
| +void QuicHeadersStream::UpdateEnableServerPush(bool value) {
|
| + spdy_session_->set_server_push_enabled(value);
|
| +}
|
| +
|
| bool QuicHeadersStream::OnDataFrameHeader(QuicStreamId stream_id,
|
| size_t length,
|
| bool fin) {
|
|
|