| Index: net/quic/core/quic_spdy_stream.cc
|
| diff --git a/net/quic/core/quic_spdy_stream.cc b/net/quic/core/quic_spdy_stream.cc
|
| index 0a6d1049a1de9fd78dcdcbdc43c273e2309a4ce6..502145c66de315a6500f3412cbd1ad03535c73bb 100644
|
| --- a/net/quic/core/quic_spdy_stream.cc
|
| +++ b/net/quic/core/quic_spdy_stream.cc
|
| @@ -205,6 +205,16 @@ void QuicSpdyStream::OnStreamHeadersComplete(bool fin, size_t frame_len) {
|
| void QuicSpdyStream::OnStreamHeaderList(bool fin,
|
| size_t frame_len,
|
| const QuicHeaderList& header_list) {
|
| + // The headers list avoid infinite buffering by clearing the headers list
|
| + // if the current headers are too large. So if the list is empty here
|
| + // then the headers list must have been too large, and the stream should
|
| + // be reset.
|
| + if (FLAGS_quic_limit_uncompressed_headers && header_list.empty()) {
|
| + OnHeadersTooLarge();
|
| + if (IsDoneReading()) {
|
| + return;
|
| + }
|
| + }
|
| if (!headers_decompressed_) {
|
| OnInitialHeadersComplete(fin, frame_len, header_list);
|
| } else {
|
| @@ -212,6 +222,10 @@ void QuicSpdyStream::OnStreamHeaderList(bool fin,
|
| }
|
| }
|
|
|
| +void QuicSpdyStream::OnHeadersTooLarge() {
|
| + Reset(QUIC_HEADERS_TOO_LARGE);
|
| +}
|
| +
|
| void QuicSpdyStream::OnInitialHeadersComplete(bool fin, size_t /*frame_len*/) {
|
| headers_decompressed_ = true;
|
| if (fin) {
|
|
|