| Index: net/quic/quic_connection.cc
|
| diff --git a/net/quic/quic_connection.cc b/net/quic/quic_connection.cc
|
| index 08fc9026f811b0d602447200afbb7b6ca831377f..12f929021fa5177cfadbb030d211060a8207d4d8 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.
|
| @@ -959,9 +982,8 @@ void QuicConnection::MaybeQueueAck() {
|
| if (ack_alarm_->IsSet()) {
|
| ack_queued_ = true;
|
| } else {
|
| - // Send an ack much more quickly for crypto handshake packets.
|
| - QuicTime::Delta delayed_ack_time = sent_packet_manager_.DelayedAckTime();
|
| - ack_alarm_->Set(clock_->ApproximateNow().Add(delayed_ack_time));
|
| + ack_alarm_->Set(
|
| + clock_->ApproximateNow().Add(sent_packet_manager_.DelayedAckTime()));
|
| DVLOG(1) << "Ack timer set; next packet or timer will trigger ACK.";
|
| }
|
| }
|
|
|