Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(454)

Side by Side Diff: net/quic/quic_client_session_base.cc

Issue 1908103002: Landing Recent QUIC changes until 4/15/2016 17:20 UTC (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/quic/quic_client_session_base.h ('k') | net/quic/quic_connection.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/quic_client_session_base.h" 5 #include "net/quic/quic_client_session_base.h"
6 6
7 #include "net/quic/quic_client_promised_info.h" 7 #include "net/quic/quic_client_promised_info.h"
8 #include "net/quic/quic_flags.h" 8 #include "net/quic/quic_flags.h"
9 #include "net/quic/spdy_utils.h" 9 #include "net/quic/spdy_utils.h"
10 10
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 largest_promised_stream_id_ = promised_stream_id; 73 largest_promised_stream_id_ = promised_stream_id;
74 74
75 QuicSpdyStream* stream = GetSpdyDataStream(stream_id); 75 QuicSpdyStream* stream = GetSpdyDataStream(stream_id);
76 if (!stream) { 76 if (!stream) {
77 // It's quite possible to receive headers after a stream has been reset. 77 // It's quite possible to receive headers after a stream has been reset.
78 return; 78 return;
79 } 79 }
80 stream->OnPromiseHeadersComplete(promised_stream_id, frame_len); 80 stream->OnPromiseHeadersComplete(promised_stream_id, frame_len);
81 } 81 }
82 82
83 void QuicClientSessionBase::OnPromiseHeaderList(
84 QuicStreamId stream_id,
85 QuicStreamId promised_stream_id,
86 size_t frame_len,
87 const QuicHeaderList& header_list) {
88 if (promised_stream_id != kInvalidStreamId &&
89 promised_stream_id <= largest_promised_stream_id_) {
90 connection()->CloseConnection(
91 QUIC_INVALID_STREAM_ID,
92 "Received push stream id lesser or equal to the"
93 " last accepted before",
94 ConnectionCloseBehavior::SEND_CONNECTION_CLOSE_PACKET);
95 return;
96 }
97 largest_promised_stream_id_ = promised_stream_id;
98
99 QuicSpdyStream* stream = GetSpdyDataStream(stream_id);
100 if (!stream) {
101 // It's quite possible to receive headers after a stream has been reset.
102 return;
103 }
104 stream->OnPromiseHeaderList(promised_stream_id, frame_len, header_list);
105 }
106
83 void QuicClientSessionBase::HandlePromised(QuicStreamId /* associated_id */, 107 void QuicClientSessionBase::HandlePromised(QuicStreamId /* associated_id */,
84 QuicStreamId id, 108 QuicStreamId id,
85 const SpdyHeaderBlock& headers) { 109 const SpdyHeaderBlock& headers) {
86 // Due to pathalogical packet re-ordering, it is possible that 110 // Due to pathalogical packet re-ordering, it is possible that
87 // frames for the promised stream have already arrived, and the 111 // frames for the promised stream have already arrived, and the
88 // promised stream could be active or closed. 112 // promised stream could be active or closed.
89 if (IsClosedStream(id)) { 113 if (IsClosedStream(id)) {
90 // There was a RST on the data stream already, perhaps 114 // There was a RST on the data stream already, perhaps
91 // QUIC_REFUSED_STREAM? 115 // QUIC_REFUSED_STREAM?
92 DVLOG(1) << "Promise ignored for stream " << id 116 DVLOG(1) << "Promise ignored for stream " << id
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
167 void QuicClientSessionBase::ResetPromised(QuicStreamId id, 191 void QuicClientSessionBase::ResetPromised(QuicStreamId id,
168 QuicRstStreamErrorCode error_code) { 192 QuicRstStreamErrorCode error_code) {
169 SendRstStream(id, error_code, 0); 193 SendRstStream(id, error_code, 0);
170 if (!IsOpenStream(id)) { 194 if (!IsOpenStream(id)) {
171 MaybeIncreaseLargestPeerStreamId(id); 195 MaybeIncreaseLargestPeerStreamId(id);
172 InsertLocallyClosedStreamsHighestOffset(id, 0); 196 InsertLocallyClosedStreamsHighestOffset(id, 0);
173 } 197 }
174 } 198 }
175 199
176 } // namespace net 200 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_client_session_base.h ('k') | net/quic/quic_connection.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698