OLD | NEW |
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/core/quic_client_session_base.h" | 5 #include "net/quic/core/quic_client_session_base.h" |
6 | 6 |
7 #include "net/quic/core/quic_client_promised_info.h" | 7 #include "net/quic/core/quic_client_promised_info.h" |
8 #include "net/quic/core/quic_flags.h" | 8 #include "net/quic/core/quic_flags.h" |
9 #include "net/quic/core/spdy_utils.h" | 9 #include "net/quic/core/spdy_utils.h" |
10 | 10 |
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
181 return static_cast<QuicSpdyStream*>(it->second.get()); | 181 return static_cast<QuicSpdyStream*>(it->second.get()); |
182 } | 182 } |
183 return nullptr; | 183 return nullptr; |
184 } | 184 } |
185 | 185 |
186 void QuicClientSessionBase::DeletePromised(QuicClientPromisedInfo* promised) { | 186 void QuicClientSessionBase::DeletePromised(QuicClientPromisedInfo* promised) { |
187 push_promise_index_->promised_by_url()->erase(promised->url()); | 187 push_promise_index_->promised_by_url()->erase(promised->url()); |
188 // Since promised_by_id_ contains the unique_ptr, this will destroy | 188 // Since promised_by_id_ contains the unique_ptr, this will destroy |
189 // promised. | 189 // promised. |
190 promised_by_id_.erase(promised->id()); | 190 promised_by_id_.erase(promised->id()); |
| 191 headers_stream()->MaybeReleaseSequencerBuffer(); |
191 } | 192 } |
192 | 193 |
193 void QuicClientSessionBase::OnPushStreamTimedOut(QuicStreamId stream_id) {} | 194 void QuicClientSessionBase::OnPushStreamTimedOut(QuicStreamId stream_id) {} |
194 | 195 |
195 void QuicClientSessionBase::ResetPromised(QuicStreamId id, | 196 void QuicClientSessionBase::ResetPromised(QuicStreamId id, |
196 QuicRstStreamErrorCode error_code) { | 197 QuicRstStreamErrorCode error_code) { |
197 SendRstStream(id, error_code, 0); | 198 SendRstStream(id, error_code, 0); |
198 if (!IsOpenStream(id)) { | 199 if (!IsOpenStream(id)) { |
199 MaybeIncreaseLargestPeerStreamId(id); | 200 MaybeIncreaseLargestPeerStreamId(id); |
200 InsertLocallyClosedStreamsHighestOffset(id, 0); | 201 InsertLocallyClosedStreamsHighestOffset(id, 0); |
201 } | 202 } |
202 } | 203 } |
203 | 204 |
| 205 void QuicClientSessionBase::CloseStreamInner(QuicStreamId stream_id, |
| 206 bool locally_reset) { |
| 207 QuicSpdySession::CloseStreamInner(stream_id, locally_reset); |
| 208 headers_stream()->MaybeReleaseSequencerBuffer(); |
| 209 } |
| 210 |
| 211 bool QuicClientSessionBase::ShouldReleaseHeadersStreamSequencerBuffer() { |
| 212 return num_active_requests() == 0 && promised_by_id_.empty(); |
| 213 } |
| 214 |
204 } // namespace net | 215 } // namespace net |
OLD | NEW |