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

Side by Side Diff: net/quic/core/quic_headers_stream.cc

Issue 2350173005: QUIC enable server push by default. Guarded by FLAGS_quic_enable_server_push_by_default. (Closed)
Patch Set: Created 4 years, 3 months 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 unified diff | Download patch
« no previous file with comments | « net/quic/core/quic_headers_stream.h ('k') | net/quic/core/quic_headers_stream_test.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/quic/core/quic_headers_stream.h" 5 #include "net/quic/core/quic_headers_stream.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/metrics/histogram_macros.h" 10 #include "base/metrics/histogram_macros.h"
11 #include "base/strings/string_number_conversions.h" 11 #include "base/strings/string_number_conversions.h"
12 #include "base/strings/stringprintf.h" 12 #include "base/strings/stringprintf.h"
13 #include "net/quic/core/quic_bug_tracker.h" 13 #include "net/quic/core/quic_bug_tracker.h"
14 #include "net/quic/core/quic_flags.h" 14 #include "net/quic/core/quic_flags.h"
15 #include "net/quic/core/quic_header_list.h" 15 #include "net/quic/core/quic_header_list.h"
16 #include "net/quic/core/quic_server_session_base.h"
16 #include "net/quic/core/quic_spdy_session.h" 17 #include "net/quic/core/quic_spdy_session.h"
17 #include "net/quic/core/quic_time.h" 18 #include "net/quic/core/quic_time.h"
18 #include "net/spdy/spdy_protocol.h" 19 #include "net/spdy/spdy_protocol.h"
19 20
20 using base::StringPiece; 21 using base::StringPiece;
21 using net::HTTP2; 22 using net::HTTP2;
22 using net::SpdyFrameType; 23 using net::SpdyFrameType;
23 using std::string; 24 using std::string;
24 25
25 namespace net { 26 namespace net {
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 190
190 void OnSetting(SpdySettingsIds id, uint8_t flags, uint32_t value) override { 191 void OnSetting(SpdySettingsIds id, uint8_t flags, uint32_t value) override {
191 if (!FLAGS_quic_respect_http2_settings_frame) { 192 if (!FLAGS_quic_respect_http2_settings_frame) {
192 CloseConnection("SPDY SETTINGS frame received."); 193 CloseConnection("SPDY SETTINGS frame received.");
193 return; 194 return;
194 } 195 }
195 switch (id) { 196 switch (id) {
196 case SETTINGS_HEADER_TABLE_SIZE: 197 case SETTINGS_HEADER_TABLE_SIZE:
197 stream_->UpdateHeaderEncoderTableSize(value); 198 stream_->UpdateHeaderEncoderTableSize(value);
198 break; 199 break;
200 case SETTINGS_ENABLE_PUSH:
201 if (FLAGS_quic_enable_server_push_by_default &&
202 stream_->session()->perspective() == Perspective::IS_SERVER) {
203 // See rfc7540, Section 6.5.2.
204 if (value > 1) {
205 CloseConnection("Invalid value for SETTINGS_ENABLE_PUSH: " +
206 base::IntToString(value));
207 return;
208 }
209 stream_->UpdateEnableServerPush(value);
210 break;
211 } else {
212 CloseConnection("Unsupported field of HTTP/2 SETTINGS frame: " +
213 base::IntToString(id));
214 }
215 break;
199 // TODO(fayang): Need to support SETTINGS_MAX_HEADER_LIST_SIZE when 216 // TODO(fayang): Need to support SETTINGS_MAX_HEADER_LIST_SIZE when
200 // clients are actually sending it. 217 // clients are actually sending it.
201 default: 218 default:
202 CloseConnection("Unsupported field of HTTP/2 SETTINGS frame: " + 219 CloseConnection("Unsupported field of HTTP/2 SETTINGS frame: " +
203 base::IntToString(id)); 220 base::IntToString(id));
204 } 221 }
205 } 222 }
206 223
207 void OnSettingsAck() override { 224 void OnSettingsAck() override {
208 if (!FLAGS_quic_respect_http2_settings_frame) { 225 if (!FLAGS_quic_respect_http2_settings_frame) {
(...skipping 377 matching lines...) Expand 10 before | Expand all | Expand 10 after
586 std::unique_ptr<HpackDebugVisitor> visitor) { 603 std::unique_ptr<HpackDebugVisitor> visitor) {
587 spdy_framer_.SetDecoderHeaderTableDebugVisitor( 604 spdy_framer_.SetDecoderHeaderTableDebugVisitor(
588 std::unique_ptr<HeaderTableDebugVisitor>(new HeaderTableDebugVisitor( 605 std::unique_ptr<HeaderTableDebugVisitor>(new HeaderTableDebugVisitor(
589 session()->connection()->helper()->GetClock(), std::move(visitor)))); 606 session()->connection()->helper()->GetClock(), std::move(visitor))));
590 } 607 }
591 608
592 void QuicHeadersStream::UpdateHeaderEncoderTableSize(uint32_t value) { 609 void QuicHeadersStream::UpdateHeaderEncoderTableSize(uint32_t value) {
593 spdy_framer_.UpdateHeaderEncoderTableSize(value); 610 spdy_framer_.UpdateHeaderEncoderTableSize(value);
594 } 611 }
595 612
613 void QuicHeadersStream::UpdateEnableServerPush(bool value) {
614 spdy_session_->set_server_push_enabled(value);
615 }
616
596 bool QuicHeadersStream::OnDataFrameHeader(QuicStreamId stream_id, 617 bool QuicHeadersStream::OnDataFrameHeader(QuicStreamId stream_id,
597 size_t length, 618 size_t length,
598 bool fin) { 619 bool fin) {
599 if (!spdy_session_->force_hol_blocking()) { 620 if (!spdy_session_->force_hol_blocking()) {
600 return false; 621 return false;
601 } 622 }
602 if (!IsConnected()) { 623 if (!IsConnected()) {
603 return true; 624 return true;
604 } 625 }
605 DVLOG(1) << "DATA frame header for stream " << stream_id << " length " 626 DVLOG(1) << "DATA frame header for stream " << stream_id << " length "
(...skipping 16 matching lines...) Expand all
622 return true; 643 return true;
623 } 644 }
624 frame_len_ -= len; 645 frame_len_ -= len;
625 // Ignore fin_ while there is more data coming, if frame_len_ > 0. 646 // Ignore fin_ while there is more data coming, if frame_len_ > 0.
626 spdy_session_->OnStreamFrameData(stream_id, data, len, 647 spdy_session_->OnStreamFrameData(stream_id, data, len,
627 frame_len_ > 0 ? false : fin_); 648 frame_len_ > 0 ? false : fin_);
628 return true; 649 return true;
629 } 650 }
630 651
631 } // namespace net 652 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/core/quic_headers_stream.h ('k') | net/quic/core/quic_headers_stream_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698