Index: net/quic/quic_connection.cc |
diff --git a/net/quic/quic_connection.cc b/net/quic/quic_connection.cc |
index 08fc9026f811b0d602447200afbb7b6ca831377f..91bca3152011a31c9676f65de28b141129087963 100644 |
--- a/net/quic/quic_connection.cc |
+++ b/net/quic/quic_connection.cc |
@@ -907,36 +907,59 @@ void QuicConnection::OnPacketComplete() { |
if (!last_stream_frames_.empty()) { |
visitor_->OnStreamFrames(last_stream_frames_); |
+ if (!connected_ && !FLAGS_quic_stop_early) { |
+ return; |
+ } |
} |
for (size_t i = 0; i < last_stream_frames_.size(); ++i) { |
stats_.stream_bytes_received += |
last_stream_frames_[i].data.TotalBufferSize(); |
} |
- |
// Process window updates, blocked, stream resets, acks, then congestion |
// feedback. |
if (!last_window_update_frames_.empty()) { |
visitor_->OnWindowUpdateFrames(last_window_update_frames_); |
+ if (!connected_ && !FLAGS_quic_stop_early) { |
+ return; |
+ } |
} |
if (!last_blocked_frames_.empty()) { |
visitor_->OnBlockedFrames(last_blocked_frames_); |
+ if (!connected_ && !FLAGS_quic_stop_early) { |
+ return; |
+ } |
} |
for (size_t i = 0; i < last_goaway_frames_.size(); ++i) { |
visitor_->OnGoAway(last_goaway_frames_[i]); |
+ if (!connected_ && !FLAGS_quic_stop_early) { |
+ return; |
+ } |
} |
for (size_t i = 0; i < last_rst_frames_.size(); ++i) { |
visitor_->OnRstStream(last_rst_frames_[i]); |
+ if (!connected_ && !FLAGS_quic_stop_early) { |
+ return; |
+ } |
} |
for (size_t i = 0; i < last_ack_frames_.size(); ++i) { |
ProcessAckFrame(last_ack_frames_[i]); |
+ if (!connected_ && !FLAGS_quic_stop_early) { |
+ return; |
+ } |
} |
for (size_t i = 0; i < last_stop_waiting_frames_.size(); ++i) { |
ProcessStopWaitingFrame(last_stop_waiting_frames_[i]); |
+ if (!connected_ && !FLAGS_quic_stop_early) { |
+ return; |
+ } |
} |
if (!last_close_frames_.empty()) { |
CloseConnection(last_close_frames_[0].error_code, true); |
DCHECK(!connected_); |
+ if (!FLAGS_quic_stop_early) { |
+ return; |
+ } |
} |
// If there are new missing packets to report, send an ack immediately. |