Index: net/quic/quic_unacked_packet_map.cc |
diff --git a/net/quic/quic_unacked_packet_map.cc b/net/quic/quic_unacked_packet_map.cc |
index a07de8b3a8b890f5f535de7bff141487aa91fd7c..185d995b1d2c0bbd43cd067591fa0fd8c3b3a1a3 100644 |
--- a/net/quic/quic_unacked_packet_map.cc |
+++ b/net/quic/quic_unacked_packet_map.cc |
@@ -80,8 +80,13 @@ void QuicUnackedPacketMap::OnRetransmittedPacket( |
*(++transmission_info->all_transmissions->begin()) < largest_observed_) { |
QuicPacketSequenceNumber old_transmission = |
*transmission_info->all_transmissions->begin(); |
- transmission_info->all_transmissions->erase(old_transmission); |
- unacked_packets_.erase(old_transmission); |
+ TransmissionInfo* old_transmission_info = |
+ FindOrNull(unacked_packets_, old_transmission); |
+ // Don't remove old packets if they're still in flight. |
+ if (old_transmission_info == NULL || !old_transmission_info->in_flight) { |
+ transmission_info->all_transmissions->erase(old_transmission); |
+ unacked_packets_.erase(old_transmission); |
+ } |
} |
unacked_packets_[new_sequence_number] = |
TransmissionInfo(frames, |