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_spdy_stream.h" | 5 #include "net/quic/core/quic_spdy_stream.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "net/quic/core/quic_spdy_session.h" | 9 #include "net/quic/core/quic_spdy_session.h" |
10 #include "net/quic/core/quic_utils.h" | 10 #include "net/quic/core/quic_utils.h" |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
160 | 160 |
161 void QuicSpdyStream::OnStreamHeaderList(bool fin, | 161 void QuicSpdyStream::OnStreamHeaderList(bool fin, |
162 size_t frame_len, | 162 size_t frame_len, |
163 const QuicHeaderList& header_list) { | 163 const QuicHeaderList& header_list) { |
164 // The headers list avoid infinite buffering by clearing the headers list | 164 // The headers list avoid infinite buffering by clearing the headers list |
165 // if the current headers are too large. So if the list is empty here | 165 // if the current headers are too large. So if the list is empty here |
166 // then the headers list must have been too large, and the stream should | 166 // then the headers list must have been too large, and the stream should |
167 // be reset. | 167 // be reset. |
168 // TODO(rch): Use an explicit "headers too large" signal. An empty header list | 168 // TODO(rch): Use an explicit "headers too large" signal. An empty header list |
169 // might be acceptable if it corresponds to a trailing header frame. | 169 // might be acceptable if it corresponds to a trailing header frame. |
170 if (FLAGS_quic_reloadable_flag_quic_limit_uncompressed_headers && | 170 if (header_list.empty()) { |
171 header_list.empty()) { | |
172 OnHeadersTooLarge(); | 171 OnHeadersTooLarge(); |
173 if (IsDoneReading()) { | 172 if (IsDoneReading()) { |
174 return; | 173 return; |
175 } | 174 } |
176 } | 175 } |
177 if (!headers_decompressed_) { | 176 if (!headers_decompressed_) { |
178 OnInitialHeadersComplete(fin, frame_len, header_list); | 177 OnInitialHeadersComplete(fin, frame_len, header_list); |
179 } else { | 178 } else { |
180 OnTrailingHeadersComplete(fin, frame_len, header_list); | 179 OnTrailingHeadersComplete(fin, frame_len, header_list); |
181 } | 180 } |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
329 QuicReferenceCountedPointer<QuicAckListenerInterface> ack_listener) { | 328 QuicReferenceCountedPointer<QuicAckListenerInterface> ack_listener) { |
330 if (spdy_session_->headers_stream() != nullptr && | 329 if (spdy_session_->headers_stream() != nullptr && |
331 spdy_session_->force_hol_blocking()) { | 330 spdy_session_->force_hol_blocking()) { |
332 return spdy_session_->WritevStreamData(id(), iov, offset, fin, | 331 return spdy_session_->WritevStreamData(id(), iov, offset, fin, |
333 std::move(ack_listener)); | 332 std::move(ack_listener)); |
334 } | 333 } |
335 return QuicStream::WritevDataInner(iov, offset, fin, std::move(ack_listener)); | 334 return QuicStream::WritevDataInner(iov, offset, fin, std::move(ack_listener)); |
336 } | 335 } |
337 | 336 |
338 } // namespace net | 337 } // namespace net |
OLD | NEW |