Index: net/quic/quic_sent_packet_manager.cc |
diff --git a/net/quic/quic_sent_packet_manager.cc b/net/quic/quic_sent_packet_manager.cc |
index f233d8ba7bd327959c4c512e24d4164fab4b7d4b..a0ce684fe7f9d848c5a4427630254d1f77a5af94 100644 |
--- a/net/quic/quic_sent_packet_manager.cc |
+++ b/net/quic/quic_sent_packet_manager.cc |
@@ -87,7 +87,8 @@ QuicSentPacketManager::QuicSentPacketManager( |
consecutive_crypto_retransmission_count_(0), |
pending_tlp_transmission_(false), |
max_tail_loss_probes_(kDefaultMaxTailLossProbes), |
- using_pacing_(false) { |
+ using_pacing_(false), |
+ handshake_confirmed_(false) { |
} |
QuicSentPacketManager::~QuicSentPacketManager() { |
@@ -606,7 +607,9 @@ bool QuicSentPacketManager::MaybeRetransmitTailLossProbe() { |
if (!it->second.in_flight || frames == NULL) { |
continue; |
} |
- DCHECK_NE(IS_HANDSHAKE, frames->HasCryptoHandshake()); |
+ if (!handshake_confirmed_) { |
+ DCHECK_NE(IS_HANDSHAKE, frames->HasCryptoHandshake()); |
+ } |
MarkForRetransmission(sequence_number, TLP_RETRANSMISSION); |
return true; |
} |
@@ -652,7 +655,7 @@ void QuicSentPacketManager::RetransmitAllPackets() { |
QuicSentPacketManager::RetransmissionTimeoutMode |
QuicSentPacketManager::GetRetransmissionMode() const { |
DCHECK(unacked_packets_.HasInFlightPackets()); |
- if (unacked_packets_.HasPendingCryptoPackets()) { |
+ if (!handshake_confirmed_ && unacked_packets_.HasPendingCryptoPackets()) { |
return HANDSHAKE_MODE; |
} |
if (loss_algorithm_->GetLossTimeout() != QuicTime::Zero()) { |