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

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

Issue 420313005: Land Recent QUIC Changes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@Final_0723
Patch Set: change QUIC packet size to 1350 Created 6 years, 4 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/reliable_quic_stream.h" 5 #include "net/quic/reliable_quic_stream.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "net/quic/iovector.h" 8 #include "net/quic/iovector.h"
9 #include "net/quic/quic_flow_controller.h" 9 #include "net/quic/quic_flow_controller.h"
10 #include "net/quic/quic_session.h" 10 #include "net/quic/quic_session.h"
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
159 GetReceivedFlowControlWindow(session), 159 GetReceivedFlowControlWindow(session),
160 GetInitialStreamFlowControlWindowToSend(session), 160 GetInitialStreamFlowControlWindowToSend(session),
161 GetInitialStreamFlowControlWindowToSend(session)), 161 GetInitialStreamFlowControlWindowToSend(session)),
162 connection_flow_controller_(session_->flow_controller()), 162 connection_flow_controller_(session_->flow_controller()),
163 stream_contributes_to_connection_flow_control_(true) { 163 stream_contributes_to_connection_flow_control_(true) {
164 } 164 }
165 165
166 ReliableQuicStream::~ReliableQuicStream() { 166 ReliableQuicStream::~ReliableQuicStream() {
167 } 167 }
168 168
169 bool ReliableQuicStream::OnStreamFrame(const QuicStreamFrame& frame) { 169 void ReliableQuicStream::OnStreamFrame(const QuicStreamFrame& frame) {
170 if (read_side_closed_) { 170 if (read_side_closed_) {
171 DVLOG(1) << ENDPOINT << "Ignoring frame " << frame.stream_id; 171 DVLOG(1) << ENDPOINT << "Ignoring frame " << frame.stream_id;
172 // We don't want to be reading: blackhole the data. 172 // We don't want to be reading: blackhole the data.
173 return true; 173 return;
174 } 174 }
175 175
176 if (frame.stream_id != id_) { 176 if (frame.stream_id != id_) {
177 LOG(ERROR) << "Error!"; 177 session_->connection()->SendConnectionClose(QUIC_INTERNAL_ERROR);
178 return false; 178 return;
179 } 179 }
180 180
181 if (frame.fin) { 181 if (frame.fin) {
182 fin_received_ = true; 182 fin_received_ = true;
183 } 183 }
184 184
185 // This count include duplicate data received. 185 // This count include duplicate data received.
186 size_t frame_payload_size = frame.data.TotalBufferSize(); 186 size_t frame_payload_size = frame.data.TotalBufferSize();
187 stream_bytes_read_ += frame_payload_size; 187 stream_bytes_read_ += frame_payload_size;
188 188
189 // Flow control is interested in tracking highest received offset. 189 // Flow control is interested in tracking highest received offset.
190 if (MaybeIncreaseHighestReceivedOffset(frame.offset + frame_payload_size)) { 190 if (MaybeIncreaseHighestReceivedOffset(frame.offset + frame_payload_size)) {
191 // As the highest received offset has changed, we should check to see if 191 // As the highest received offset has changed, we should check to see if
192 // this is a violation of flow control. 192 // this is a violation of flow control.
193 if (flow_controller_.FlowControlViolation() || 193 if (flow_controller_.FlowControlViolation() ||
194 connection_flow_controller_->FlowControlViolation()) { 194 connection_flow_controller_->FlowControlViolation()) {
195 session_->connection()->SendConnectionClose( 195 session_->connection()->SendConnectionClose(
196 QUIC_FLOW_CONTROL_RECEIVED_TOO_MUCH_DATA); 196 QUIC_FLOW_CONTROL_RECEIVED_TOO_MUCH_DATA);
197 return false; 197 return;
198 } 198 }
199 } 199 }
200 200
201 return sequencer_.OnStreamFrame(frame); 201 sequencer_.OnStreamFrame(frame);
202 } 202 }
203 203
204 int ReliableQuicStream::num_frames_received() const { 204 int ReliableQuicStream::num_frames_received() const {
205 return sequencer_.num_frames_received(); 205 return sequencer_.num_frames_received();
206 } 206 }
207 207
208 int ReliableQuicStream::num_duplicate_frames_received() const { 208 int ReliableQuicStream::num_duplicate_frames_received() const {
209 return sequencer_.num_duplicate_frames_received(); 209 return sequencer_.num_duplicate_frames_received();
210 } 210 }
211 211
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after
534 534
535 bool ReliableQuicStream::IsFlowControlBlocked() { 535 bool ReliableQuicStream::IsFlowControlBlocked() {
536 if (flow_controller_.IsBlocked()) { 536 if (flow_controller_.IsBlocked()) {
537 return true; 537 return true;
538 } 538 }
539 return stream_contributes_to_connection_flow_control_ && 539 return stream_contributes_to_connection_flow_control_ &&
540 connection_flow_controller_->IsBlocked(); 540 connection_flow_controller_->IsBlocked();
541 } 541 }
542 542
543 } // namespace net 543 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698