| 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 |