gfe-relnote: In QUIC move NeuterUnencryptedPackets and NeuterHandshakePackets from quic_sent_packet_manager to unacked_packet_map. Refactoring only, no functional change expected, not protected.
PiperOrigin-RevId: 291767679
Change-Id: Iea249f4bffd728282cd137776370dd63a0772ff5
diff --git a/quic/core/quic_sent_packet_manager.cc b/quic/core/quic_sent_packet_manager.cc
index d9f501c..0137fde 100644
--- a/quic/core/quic_sent_packet_manager.cc
+++ b/quic/core/quic_sent_packet_manager.cc
@@ -455,36 +455,11 @@
}
void QuicSentPacketManager::NeuterUnencryptedPackets() {
- QuicPacketNumber packet_number = unacked_packets_.GetLeastUnacked();
- for (QuicUnackedPacketMap::iterator it = unacked_packets_.begin();
- it != unacked_packets_.end(); ++it, ++packet_number) {
- if (!it->retransmittable_frames.empty() &&
- it->encryption_level == ENCRYPTION_INITIAL) {
- // Once the connection swithes to forward secure, no unencrypted packets
- // will be sent. The data has been abandoned in the cryto stream. Remove
- // it from in flight.
- unacked_packets_.RemoveFromInFlight(packet_number);
- it->state = NEUTERED;
- DCHECK(!unacked_packets_.HasRetransmittableFrames(*it));
- }
- }
+ unacked_packets_.NeuterUnencryptedPackets();
}
void QuicSentPacketManager::NeuterHandshakePackets() {
- QuicPacketNumber packet_number = unacked_packets_.GetLeastUnacked();
- for (QuicUnackedPacketMap::iterator it = unacked_packets_.begin();
- it != unacked_packets_.end(); ++it, ++packet_number) {
- if (!it->retransmittable_frames.empty() &&
- unacked_packets_.GetPacketNumberSpace(it->encryption_level) ==
- HANDSHAKE_DATA) {
- unacked_packets_.RemoveFromInFlight(packet_number);
- // Notify session that the data has been delivered (but do not notify
- // send algorithm).
- it->state = NEUTERED;
- unacked_packets_.NotifyFramesAcked(*it, QuicTime::Delta::Zero(),
- QuicTime::Zero());
- }
- }
+ unacked_packets_.NeuterHandshakePackets();
}
bool QuicSentPacketManager::ShouldAddMaxAckDelay() const {
diff --git a/quic/core/quic_sent_packet_manager.h b/quic/core/quic_sent_packet_manager.h
index d6c9b83..686639a 100644
--- a/quic/core/quic_sent_packet_manager.h
+++ b/quic/core/quic_sent_packet_manager.h
@@ -161,7 +161,6 @@
// Removes the retransmittable frames from all unencrypted packets to ensure
// they don't get retransmitted.
- // TODO(fayang): Consider replace this function with NeuterHandshakePackets.
void NeuterUnencryptedPackets();
// Returns true if there's outstanding crypto data.
@@ -509,8 +508,6 @@
// Called when handshake is confirmed to remove the retransmittable frames
// from all packets of HANDSHAKE_DATA packet number space to ensure they don't
// get retransmitted and will eventually be removed from unacked packets map.
- // Please note, this only applies to QUIC Crypto and needs to be changed when
- // switches to IETF QUIC with QUIC TLS.
void NeuterHandshakePackets();
// Indicates whether including peer_max_ack_delay_ when calculating PTO
diff --git a/quic/core/quic_unacked_packet_map.cc b/quic/core/quic_unacked_packet_map.cc
index d8beb43..2db0f86 100644
--- a/quic/core/quic_unacked_packet_map.cc
+++ b/quic/core/quic_unacked_packet_map.cc
@@ -208,6 +208,37 @@
RemoveFromInFlight(info);
}
+void QuicUnackedPacketMap::NeuterUnencryptedPackets() {
+ QuicPacketNumber packet_number = GetLeastUnacked();
+ for (QuicUnackedPacketMap::iterator it = unacked_packets_.begin();
+ it != unacked_packets_.end(); ++it, ++packet_number) {
+ if (!it->retransmittable_frames.empty() &&
+ it->encryption_level == ENCRYPTION_INITIAL) {
+ // Once the connection swithes to forward secure, no unencrypted packets
+ // will be sent. The data has been abandoned in the cryto stream. Remove
+ // it from in flight.
+ RemoveFromInFlight(packet_number);
+ it->state = NEUTERED;
+ DCHECK(!HasRetransmittableFrames(*it));
+ }
+ }
+}
+
+void QuicUnackedPacketMap::NeuterHandshakePackets() {
+ QuicPacketNumber packet_number = GetLeastUnacked();
+ for (QuicUnackedPacketMap::iterator it = unacked_packets_.begin();
+ it != unacked_packets_.end(); ++it, ++packet_number) {
+ if (!it->retransmittable_frames.empty() &&
+ GetPacketNumberSpace(it->encryption_level) == HANDSHAKE_DATA) {
+ RemoveFromInFlight(packet_number);
+ // Notify session that the data has been delivered (but do not notify
+ // send algorithm).
+ it->state = NEUTERED;
+ NotifyFramesAcked(*it, QuicTime::Delta::Zero(), QuicTime::Zero());
+ }
+ }
+}
+
bool QuicUnackedPacketMap::HasInFlightPackets() const {
return bytes_in_flight_ > 0;
}
diff --git a/quic/core/quic_unacked_packet_map.h b/quic/core/quic_unacked_packet_map.h
index fd6510a..c106fd3 100644
--- a/quic/core/quic_unacked_packet_map.h
+++ b/quic/core/quic_unacked_packet_map.h
@@ -65,6 +65,15 @@
// Marks |packet_number| as no longer in flight.
void RemoveFromInFlight(QuicPacketNumber packet_number);
+ // Called to neuter all unencrypted packets to ensure they do not get
+ // retransmitted.
+ void NeuterUnencryptedPackets();
+
+ // Called to neuter packets in handshake packet number space to ensure they do
+ // not get retransmitted.
+ // TODO(fayang): Consider to combine this with NeuterUnencryptedPackets.
+ void NeuterHandshakePackets();
+
// Returns true if |packet_number| has retransmittable frames. This will
// return false if all frames of this packet are either non-retransmittable or
// have been acked.