| Index: net/quic/quic_client_session_base.cc
|
| diff --git a/net/quic/quic_client_session_base.cc b/net/quic/quic_client_session_base.cc
|
| index 740263d2d5956a6c0e78af967b0c88fb5d7d0049..5ff7d12aa609fa873e6d36f3571e57ec4499448e 100644
|
| --- a/net/quic/quic_client_session_base.cc
|
| +++ b/net/quic/quic_client_session_base.cc
|
| @@ -28,4 +28,35 @@ void QuicClientSessionBase::OnCryptoHandshakeEvent(CryptoHandshakeEvent event) {
|
| headers_stream()->set_fec_policy(FEC_PROTECT_ALWAYS);
|
| }
|
|
|
| +void QuicClientSessionBase::OnPromiseHeaders(QuicStreamId stream_id,
|
| + StringPiece headers_data) {
|
| + QuicSpdyStream* stream = GetSpdyDataStream(stream_id);
|
| + if (!stream) {
|
| + // It's quite possible to receive headers after a stream has been reset.
|
| + return;
|
| + }
|
| + stream->OnPromiseHeaders(headers_data);
|
| +}
|
| +
|
| +void QuicClientSessionBase::OnPromiseHeadersComplete(
|
| + QuicStreamId stream_id,
|
| + QuicStreamId promised_stream_id,
|
| + size_t frame_len) {
|
| + if (promised_stream_id != kInvalidStreamId &&
|
| + promised_stream_id <= largest_promised_stream_id_) {
|
| + CloseConnectionWithDetails(QUIC_INVALID_STREAM_ID,
|
| + "Received push stream id lesser or equal to the"
|
| + " last accepted before");
|
| + return;
|
| + }
|
| + largest_promised_stream_id_ = promised_stream_id;
|
| +
|
| + QuicSpdyStream* stream = GetSpdyDataStream(stream_id);
|
| + if (!stream) {
|
| + // It's quite possible to receive headers after a stream has been reset.
|
| + return;
|
| + }
|
| + stream->OnPromiseHeadersComplete(promised_stream_id, frame_len);
|
| +}
|
| +
|
| } // namespace net
|
|
|