| Index: net/quic/quic_spdy_stream.cc
|
| diff --git a/net/quic/quic_spdy_stream.cc b/net/quic/quic_spdy_stream.cc
|
| index 75b160e2d72501343580e81d2fc9c2445427e4d2..3486593d0a096fe4dc1748dfaf1bbfa574bb2308 100644
|
| --- a/net/quic/quic_spdy_stream.cc
|
| +++ b/net/quic/quic_spdy_stream.cc
|
| @@ -10,6 +10,7 @@
|
| #include "net/quic/quic_spdy_session.h"
|
| #include "net/quic/quic_utils.h"
|
| #include "net/quic/quic_write_blocked_list.h"
|
| +#include "net/quic/spdy_utils.h"
|
|
|
| using base::StringPiece;
|
| using std::min;
|
| @@ -213,7 +214,22 @@ void QuicSpdyStream::OnTrailingHeadersComplete(bool fin, size_t /*frame_len*/) {
|
| return;
|
| }
|
|
|
| - OnStreamFrame(QuicStreamFrame(id(), fin, stream_bytes_read(), StringPiece()));
|
| + size_t final_byte_offset = 0;
|
| + SpdyHeaderBlock trailers;
|
| + if (!SpdyUtils::ParseTrailers(decompressed_trailers().data(),
|
| + decompressed_trailers().length(),
|
| + &final_byte_offset, &response_trailers_)) {
|
| + DLOG(ERROR) << "Trailers are malformed: " << id();
|
| + session()->connection()->SendConnectionCloseWithDetails(
|
| + QUIC_INVALID_HEADERS_STREAM_DATA, "Trailers are malformed");
|
| + return;
|
| + }
|
| +
|
| + // The data on this stream ends at |final_byte_offset|.
|
| + DVLOG(1) << "Stream ends at byte offset: " << final_byte_offset
|
| + << " currently read: " << stream_bytes_read();
|
| +
|
| + OnStreamFrame(QuicStreamFrame(id(), fin, final_byte_offset, StringPiece()));
|
| trailers_decompressed_ = true;
|
| }
|
|
|
|
|