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 b289c61017b76295ebd6510aa48ccacef195c8ac..04eb1b881df1d0643fa07962699aff593588289a 100644 |
--- a/net/quic/quic_unacked_packet_map.cc |
+++ b/net/quic/quic_unacked_packet_map.cc |
@@ -42,28 +42,28 @@ void QuicUnackedPacketMap::AddSentPacket( |
QuicByteCount bytes_sent, |
bool set_in_flight) { |
QuicPacketSequenceNumber sequence_number = packet.sequence_number; |
- DCHECK_LT(largest_sent_packet_, sequence_number); |
+ LOG_IF(DFATAL, largest_sent_packet_ > sequence_number); |
DCHECK_GE(sequence_number, least_unacked_ + unacked_packets_.size()); |
while (least_unacked_ + unacked_packets_.size() < sequence_number) { |
unacked_packets_.push_back(TransmissionInfo()); |
unacked_packets_.back().is_unackable = true; |
} |
- TransmissionInfo info; |
+ TransmissionInfo info(packet.retransmittable_frames, |
+ packet.sequence_number_length, |
+ transmission_type, |
+ sent_time); |
if (old_sequence_number == 0) { |
if (packet.retransmittable_frames != nullptr && |
packet.retransmittable_frames->HasCryptoHandshake() == IS_HANDSHAKE) { |
++pending_crypto_packet_count_; |
} |
- info = TransmissionInfo(packet.retransmittable_frames, |
- packet.sequence_number_length); |
} else { |
- info = OnRetransmittedPacket( |
- old_sequence_number, sequence_number, transmission_type); |
+ TransferRetransmissionInfo( |
+ old_sequence_number, sequence_number, transmission_type, &info); |
} |
- info.sent_time = sent_time; |
- largest_sent_packet_ = max(sequence_number, largest_sent_packet_); |
+ largest_sent_packet_ = sequence_number; |
if (set_in_flight) { |
bytes_in_flight_ += bytes_sent; |
info.bytes_sent = bytes_sent; |
@@ -82,10 +82,11 @@ void QuicUnackedPacketMap::RemoveObsoletePackets() { |
} |
} |
-TransmissionInfo QuicUnackedPacketMap::OnRetransmittedPacket( |
+void QuicUnackedPacketMap::TransferRetransmissionInfo( |
QuicPacketSequenceNumber old_sequence_number, |
QuicPacketSequenceNumber new_sequence_number, |
- TransmissionType transmission_type) { |
+ TransmissionType transmission_type, |
+ TransmissionInfo* info) { |
DCHECK_GE(old_sequence_number, least_unacked_); |
DCHECK_LT(old_sequence_number, least_unacked_ + unacked_packets_.size()); |
DCHECK_GE(new_sequence_number, least_unacked_ + unacked_packets_.size()); |
@@ -130,14 +131,10 @@ TransmissionInfo QuicUnackedPacketMap::OnRetransmittedPacket( |
} |
transmission_info->all_transmissions->push_back(new_sequence_number); |
} |
- TransmissionInfo info = |
- TransmissionInfo(frames, |
- transmission_info->sequence_number_length, |
- transmission_type, |
- transmission_info->all_transmissions); |
+ info->retransmittable_frames = frames; |
+ info->all_transmissions = transmission_info->all_transmissions; |
// Proactively remove obsolete packets so the least unacked can be raised. |
RemoveObsoletePackets(); |
- return info; |
} |
void QuicUnackedPacketMap::ClearAllPreviousRetransmissions() { |