| OLD | NEW |
| 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 <algorithm> | 7 #include <algorithm> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 200 } | 200 } |
| 201 stream_->UpdateEnableServerPush(value > 0); | 201 stream_->UpdateEnableServerPush(value > 0); |
| 202 break; | 202 break; |
| 203 } else { | 203 } else { |
| 204 CloseConnection("Unsupported field of HTTP/2 SETTINGS frame: " + | 204 CloseConnection("Unsupported field of HTTP/2 SETTINGS frame: " + |
| 205 base::IntToString(id)); | 205 base::IntToString(id)); |
| 206 } | 206 } |
| 207 break; | 207 break; |
| 208 // TODO(fayang): Need to support SETTINGS_MAX_HEADER_LIST_SIZE when | 208 // TODO(fayang): Need to support SETTINGS_MAX_HEADER_LIST_SIZE when |
| 209 // clients are actually sending it. | 209 // clients are actually sending it. |
| 210 case SETTINGS_MAX_HEADER_LIST_SIZE: |
| 211 if (FLAGS_quic_send_max_header_list_size) { |
| 212 break; |
| 213 } |
| 210 default: | 214 default: |
| 211 CloseConnection("Unsupported field of HTTP/2 SETTINGS frame: " + | 215 CloseConnection("Unsupported field of HTTP/2 SETTINGS frame: " + |
| 212 base::IntToString(id)); | 216 base::IntToString(id)); |
| 213 } | 217 } |
| 214 } | 218 } |
| 215 | 219 |
| 216 void OnSettingsAck() override { | 220 void OnSettingsAck() override { |
| 217 if (!FLAGS_quic_respect_http2_settings_frame) { | 221 if (!FLAGS_quic_respect_http2_settings_frame) { |
| 218 CloseConnection("SPDY SETTINGS frame received."); | 222 CloseConnection("SPDY SETTINGS frame received."); |
| 219 } | 223 } |
| (...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 570 spdy_session_->set_server_push_enabled(value); | 574 spdy_session_->set_server_push_enabled(value); |
| 571 } | 575 } |
| 572 | 576 |
| 573 void QuicHeadersStream::MaybeReleaseSequencerBuffer() { | 577 void QuicHeadersStream::MaybeReleaseSequencerBuffer() { |
| 574 if (FLAGS_quic_headers_stream_release_sequencer_buffer && | 578 if (FLAGS_quic_headers_stream_release_sequencer_buffer && |
| 575 spdy_session_->ShouldReleaseHeadersStreamSequencerBuffer()) { | 579 spdy_session_->ShouldReleaseHeadersStreamSequencerBuffer()) { |
| 576 sequencer()->ReleaseBufferIfEmpty(); | 580 sequencer()->ReleaseBufferIfEmpty(); |
| 577 } | 581 } |
| 578 } | 582 } |
| 579 | 583 |
| 584 size_t QuicHeadersStream::SendMaxHeaderListSize(size_t value) { |
| 585 SpdySettingsIR settings_frame; |
| 586 settings_frame.AddSetting(SETTINGS_MAX_HEADER_LIST_SIZE, false, false, value); |
| 587 |
| 588 SpdySerializedFrame frame(spdy_framer_.SerializeFrame(settings_frame)); |
| 589 WriteOrBufferData(StringPiece(frame.data(), frame.size()), false, nullptr); |
| 590 return frame.size(); |
| 591 } |
| 592 |
| 580 bool QuicHeadersStream::OnDataFrameHeader(QuicStreamId stream_id, | 593 bool QuicHeadersStream::OnDataFrameHeader(QuicStreamId stream_id, |
| 581 size_t length, | 594 size_t length, |
| 582 bool fin) { | 595 bool fin) { |
| 583 if (!spdy_session_->force_hol_blocking()) { | 596 if (!spdy_session_->force_hol_blocking()) { |
| 584 return false; | 597 return false; |
| 585 } | 598 } |
| 586 if (!IsConnected()) { | 599 if (!IsConnected()) { |
| 587 return true; | 600 return true; |
| 588 } | 601 } |
| 589 DVLOG(1) << "DATA frame header for stream " << stream_id << " length " | 602 DVLOG(1) << "DATA frame header for stream " << stream_id << " length " |
| (...skipping 16 matching lines...) Expand all Loading... |
| 606 return true; | 619 return true; |
| 607 } | 620 } |
| 608 frame_len_ -= len; | 621 frame_len_ -= len; |
| 609 // Ignore fin_ while there is more data coming, if frame_len_ > 0. | 622 // Ignore fin_ while there is more data coming, if frame_len_ > 0. |
| 610 spdy_session_->OnStreamFrameData(stream_id, data, len, | 623 spdy_session_->OnStreamFrameData(stream_id, data, len, |
| 611 frame_len_ > 0 ? false : fin_); | 624 frame_len_ > 0 ? false : fin_); |
| 612 return true; | 625 return true; |
| 613 } | 626 } |
| 614 | 627 |
| 615 } // namespace net | 628 } // namespace net |
| OLD | NEW |