Index: net/quic/quic_sent_packet_manager_test.cc |
diff --git a/net/quic/quic_sent_packet_manager_test.cc b/net/quic/quic_sent_packet_manager_test.cc |
index 392423cc3a574542f3fcea04166cbd82276b3f8c..e44dca53061a736328076e346da38a2c24241558 100644 |
--- a/net/quic/quic_sent_packet_manager_test.cc |
+++ b/net/quic/quic_sent_packet_manager_test.cc |
@@ -197,6 +197,7 @@ class QuicSentPacketManagerTest : public ::testing::TestWithParam<bool> { |
SerializedPacket packet(CreateDataPacket(sequence_number)); |
packet.retransmittable_frames->AddStreamFrame( |
new QuicStreamFrame(1, false, 0, IOVector())); |
+ packet.retransmittable_frames->set_encryption_level(ENCRYPTION_NONE); |
manager_.OnSerializedPacket(packet); |
manager_.OnPacketSent(sequence_number, clock_.ApproximateNow(), |
packet.packet->length(), NOT_RETRANSMISSION, |
@@ -987,6 +988,25 @@ TEST_F(QuicSentPacketManagerTest, |
EXPECT_FALSE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_)); |
} |
+TEST_F(QuicSentPacketManagerTest, |
+ CryptoHandshakeRetransmissionThenAbandonAll) { |
+ // Send 1 crypto packet. |
+ SendCryptoPacket(1); |
+ EXPECT_TRUE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_)); |
+ |
+ // Retransmit the crypto packet as 2. |
+ manager_.OnRetransmissionTimeout(); |
+ RetransmitNextPacket(2); |
+ |
+ // Now discard all unacked unencrypted packets, which occurs when the |
+ // connection goes forward secure. |
+ manager_.DiscardUnencryptedPackets(); |
+ VerifyUnackedPackets(NULL, 0); |
+ EXPECT_FALSE(manager_.HasPendingRetransmissions()); |
+ EXPECT_FALSE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_)); |
+ EXPECT_FALSE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_)); |
+} |
+ |
TEST_F(QuicSentPacketManagerTest, TailLossProbeTimeoutUnsentDataPacket) { |
QuicSentPacketManagerPeer::SetMaxTailLossProbes(&manager_, 2); |
// Serialize two data packets and send the latter. |