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_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;
}