gfe-relnote: In QUIC, remove largest_sent_packets_ from unacked_packet_map. This only affects QUIC versions with TLS handshake. Protected by disabled gfe2_reloadable_flag_quic_enable_version_t* flags.
PiperOrigin-RevId: 291934571
Change-Id: Ifc0a73a9db508e9938dc14b40e76cc3fe00315c7
diff --git a/quic/core/quic_connection.cc b/quic/core/quic_connection.cc
index e987da9..03f5800 100644
--- a/quic/core/quic_connection.cc
+++ b/quic/core/quic_connection.cc
@@ -941,11 +941,11 @@
return true;
}
- if (!GetLargestSentPacket().IsInitialized() ||
- largest_acked > GetLargestSentPacket()) {
+ if (!sent_packet_manager_.GetLargestSentPacket().IsInitialized() ||
+ largest_acked > sent_packet_manager_.GetLargestSentPacket()) {
QUIC_DLOG(WARNING) << ENDPOINT
<< "Peer's observed unsent packet:" << largest_acked
- << " vs " << GetLargestSentPacket()
+ << " vs " << sent_packet_manager_.GetLargestSentPacket()
<< ". SupportsMultiplePacketNumberSpaces():"
<< SupportsMultiplePacketNumberSpaces()
<< ", last_decrypted_packet_level_:"
@@ -3965,14 +3965,6 @@
return largest_seen_packet_with_ack_;
}
-QuicPacketNumber QuicConnection::GetLargestSentPacket() const {
- if (SupportsMultiplePacketNumberSpaces()) {
- return sent_packet_manager_.GetLargestSentPacket(
- last_decrypted_packet_level_);
- }
- return sent_packet_manager_.GetLargestSentPacket();
-}
-
QuicPacketNumber QuicConnection::GetLargestAckedPacket() const {
if (SupportsMultiplePacketNumberSpaces()) {
return sent_packet_manager_.GetLargestAckedPacket(
diff --git a/quic/core/quic_framer.cc b/quic/core/quic_framer.cc
index ab99f05..080aa01 100644
--- a/quic/core/quic_framer.cc
+++ b/quic/core/quic_framer.cc
@@ -3586,7 +3586,13 @@
}
// Done processing the ACK frame.
- return visitor_->OnAckFrameEnd(QuicPacketNumber(first_received));
+ if (!visitor_->OnAckFrameEnd(QuicPacketNumber(first_received))) {
+ set_detailed_error(
+ "Error occurs when visitor finishes processing the ACK frame.");
+ return false;
+ }
+
+ return true;
}
bool QuicFramer::ProcessTimestampsInAckFrame(uint8_t num_received_packets,
@@ -3817,7 +3823,13 @@
ack_block_count--;
}
- return visitor_->OnAckFrameEnd(QuicPacketNumber(block_low));
+ if (!visitor_->OnAckFrameEnd(QuicPacketNumber(block_low))) {
+ set_detailed_error(
+ "Error occurs when visitor finishes processing the ACK frame.");
+ return false;
+ }
+
+ return true;
}
bool QuicFramer::ProcessStopWaitingFrame(QuicDataReader* reader,
diff --git a/quic/core/quic_sent_packet_manager.cc b/quic/core/quic_sent_packet_manager.cc
index 0137fde..767566c 100644
--- a/quic/core/quic_sent_packet_manager.cc
+++ b/quic/core/quic_sent_packet_manager.cc
@@ -1277,13 +1277,6 @@
QuicUtils::GetPacketNumberSpace(decrypted_packet_level));
}
-QuicPacketNumber QuicSentPacketManager::GetLargestSentPacket(
- EncryptionLevel decrypted_packet_level) const {
- DCHECK(supports_multiple_packet_number_spaces());
- return unacked_packets_.GetLargestSentPacketOfPacketNumberSpace(
- decrypted_packet_level);
-}
-
QuicPacketNumber QuicSentPacketManager::GetLargestPacketPeerKnowsIsAcked(
EncryptionLevel decrypted_packet_level) const {
DCHECK(supports_multiple_packet_number_spaces());
diff --git a/quic/core/quic_sent_packet_manager.h b/quic/core/quic_sent_packet_manager.h
index 686639a..ab53066 100644
--- a/quic/core/quic_sent_packet_manager.h
+++ b/quic/core/quic_sent_packet_manager.h
@@ -303,9 +303,6 @@
return unacked_packets_.largest_sent_packet();
}
- QuicPacketNumber GetLargestSentPacket(
- EncryptionLevel decrypted_packet_level) const;
-
QuicPacketNumber GetLargestPacketPeerKnowsIsAcked(
EncryptionLevel decrypted_packet_level) const;
diff --git a/quic/core/quic_sent_packet_manager_test.cc b/quic/core/quic_sent_packet_manager_test.cc
index f007562..49d0b1d 100644
--- a/quic/core/quic_sent_packet_manager_test.cc
+++ b/quic/core/quic_sent_packet_manager_test.cc
@@ -2457,16 +2457,23 @@
TEST_F(QuicSentPacketManagerTest, MultiplePacketNumberSpaces) {
manager_.EnableMultiplePacketNumberSpacesSupport();
+ const QuicUnackedPacketMap* unacked_packets =
+ QuicSentPacketManagerPeer::GetUnackedPacketMap(&manager_);
EXPECT_FALSE(
- manager_.GetLargestSentPacket(ENCRYPTION_INITIAL).IsInitialized());
+ unacked_packets
+ ->GetLargestSentRetransmittableOfPacketNumberSpace(INITIAL_DATA)
+ .IsInitialized());
EXPECT_FALSE(
manager_.GetLargestAckedPacket(ENCRYPTION_INITIAL).IsInitialized());
// Send packet 1.
SendDataPacket(1, ENCRYPTION_INITIAL);
EXPECT_EQ(QuicPacketNumber(1),
- manager_.GetLargestSentPacket(ENCRYPTION_INITIAL));
+ unacked_packets->GetLargestSentRetransmittableOfPacketNumberSpace(
+ INITIAL_DATA));
EXPECT_FALSE(
- manager_.GetLargestSentPacket(ENCRYPTION_HANDSHAKE).IsInitialized());
+ unacked_packets
+ ->GetLargestSentRetransmittableOfPacketNumberSpace(HANDSHAKE_DATA)
+ .IsInitialized());
// Ack packet 1.
ExpectAck(1);
manager_.OnAckFrameStart(QuicPacketNumber(1), QuicTime::Delta::Infinite(),
@@ -2483,11 +2490,15 @@
SendDataPacket(2, ENCRYPTION_HANDSHAKE);
SendDataPacket(3, ENCRYPTION_HANDSHAKE);
EXPECT_EQ(QuicPacketNumber(1),
- manager_.GetLargestSentPacket(ENCRYPTION_INITIAL));
+ unacked_packets->GetLargestSentRetransmittableOfPacketNumberSpace(
+ INITIAL_DATA));
EXPECT_EQ(QuicPacketNumber(3),
- manager_.GetLargestSentPacket(ENCRYPTION_HANDSHAKE));
+ unacked_packets->GetLargestSentRetransmittableOfPacketNumberSpace(
+ HANDSHAKE_DATA));
EXPECT_FALSE(
- manager_.GetLargestSentPacket(ENCRYPTION_ZERO_RTT).IsInitialized());
+ unacked_packets
+ ->GetLargestSentRetransmittableOfPacketNumberSpace(APPLICATION_DATA)
+ .IsInitialized());
// Ack packet 2.
ExpectAck(2);
manager_.OnAckFrameStart(QuicPacketNumber(2), QuicTime::Delta::Infinite(),
@@ -2516,13 +2527,14 @@
SendDataPacket(4, ENCRYPTION_ZERO_RTT);
SendDataPacket(5, ENCRYPTION_ZERO_RTT);
EXPECT_EQ(QuicPacketNumber(1),
- manager_.GetLargestSentPacket(ENCRYPTION_INITIAL));
+ unacked_packets->GetLargestSentRetransmittableOfPacketNumberSpace(
+ INITIAL_DATA));
EXPECT_EQ(QuicPacketNumber(3),
- manager_.GetLargestSentPacket(ENCRYPTION_HANDSHAKE));
+ unacked_packets->GetLargestSentRetransmittableOfPacketNumberSpace(
+ HANDSHAKE_DATA));
EXPECT_EQ(QuicPacketNumber(5),
- manager_.GetLargestSentPacket(ENCRYPTION_ZERO_RTT));
- EXPECT_EQ(QuicPacketNumber(5),
- manager_.GetLargestSentPacket(ENCRYPTION_FORWARD_SECURE));
+ unacked_packets->GetLargestSentRetransmittableOfPacketNumberSpace(
+ APPLICATION_DATA));
// Ack packet 5.
ExpectAck(5);
manager_.OnAckFrameStart(QuicPacketNumber(5), QuicTime::Delta::Infinite(),
@@ -2543,13 +2555,14 @@
SendDataPacket(7, ENCRYPTION_FORWARD_SECURE);
SendDataPacket(8, ENCRYPTION_FORWARD_SECURE);
EXPECT_EQ(QuicPacketNumber(1),
- manager_.GetLargestSentPacket(ENCRYPTION_INITIAL));
+ unacked_packets->GetLargestSentRetransmittableOfPacketNumberSpace(
+ INITIAL_DATA));
EXPECT_EQ(QuicPacketNumber(3),
- manager_.GetLargestSentPacket(ENCRYPTION_HANDSHAKE));
+ unacked_packets->GetLargestSentRetransmittableOfPacketNumberSpace(
+ HANDSHAKE_DATA));
EXPECT_EQ(QuicPacketNumber(8),
- manager_.GetLargestSentPacket(ENCRYPTION_ZERO_RTT));
- EXPECT_EQ(QuicPacketNumber(8),
- manager_.GetLargestSentPacket(ENCRYPTION_FORWARD_SECURE));
+ unacked_packets->GetLargestSentRetransmittableOfPacketNumberSpace(
+ APPLICATION_DATA));
// Ack all packets.
uint64_t acked[] = {4, 6, 7, 8};
ExpectAcksAndLosses(true, acked, QUICHE_ARRAYSIZE(acked), nullptr, 0);
diff --git a/quic/core/quic_unacked_packet_map.cc b/quic/core/quic_unacked_packet_map.cc
index 2db0f86..50f5c85 100644
--- a/quic/core/quic_unacked_packet_map.cc
+++ b/quic/core/quic_unacked_packet_map.cc
@@ -65,10 +65,6 @@
largest_sent_largest_acked_.UpdateMax(packet->largest_acked);
largest_sent_packet_ = packet_number;
- if (supports_multiple_packet_number_spaces_) {
- largest_sent_packets_[GetPacketNumberSpace(packet->encryption_level)] =
- packet_number;
- }
if (set_in_flight) {
bytes_in_flight_ += bytes_sent;
++packets_in_flight_;
@@ -456,10 +452,4 @@
supports_multiple_packet_number_spaces_ = true;
}
-QuicPacketNumber QuicUnackedPacketMap::GetLargestSentPacketOfPacketNumberSpace(
- EncryptionLevel encryption_level) const {
- DCHECK(supports_multiple_packet_number_spaces_);
- return largest_sent_packets_[GetPacketNumberSpace(encryption_level)];
-}
-
} // namespace quic
diff --git a/quic/core/quic_unacked_packet_map.h b/quic/core/quic_unacked_packet_map.h
index c106fd3..61261a5 100644
--- a/quic/core/quic_unacked_packet_map.h
+++ b/quic/core/quic_unacked_packet_map.h
@@ -245,8 +245,6 @@
const Perspective perspective_;
QuicPacketNumber largest_sent_packet_;
- // Only used when supports_multiple_packet_number_spaces_ is true.
- QuicPacketNumber largest_sent_packets_[NUM_PACKET_NUMBER_SPACES];
// The largest sent packet we expect to receive an ack for per packet number
// space.
QuicPacketNumber
diff --git a/quic/core/quic_unacked_packet_map_test.cc b/quic/core/quic_unacked_packet_map_test.cc
index 7439675..560b8cb 100644
--- a/quic/core/quic_unacked_packet_map_test.cc
+++ b/quic/core/quic_unacked_packet_map_test.cc
@@ -564,20 +564,21 @@
TEST_P(QuicUnackedPacketMapTest, LargestSentPacketMultiplePacketNumberSpaces) {
unacked_packets_.EnableMultiplePacketNumberSpacesSupport();
- EXPECT_FALSE(unacked_packets_
- .GetLargestSentPacketOfPacketNumberSpace(ENCRYPTION_INITIAL)
- .IsInitialized());
+ EXPECT_FALSE(
+ unacked_packets_
+ .GetLargestSentRetransmittableOfPacketNumberSpace(INITIAL_DATA)
+ .IsInitialized());
// Send packet 1.
SerializedPacket packet1(CreateRetransmittablePacket(1));
packet1.encryption_level = ENCRYPTION_INITIAL;
unacked_packets_.AddSentPacket(&packet1, NOT_RETRANSMISSION, now_, true);
EXPECT_EQ(QuicPacketNumber(1u), unacked_packets_.largest_sent_packet());
EXPECT_EQ(QuicPacketNumber(1),
- unacked_packets_.GetLargestSentPacketOfPacketNumberSpace(
- ENCRYPTION_INITIAL));
+ unacked_packets_.GetLargestSentRetransmittableOfPacketNumberSpace(
+ INITIAL_DATA));
EXPECT_FALSE(
unacked_packets_
- .GetLargestSentPacketOfPacketNumberSpace(ENCRYPTION_HANDSHAKE)
+ .GetLargestSentRetransmittableOfPacketNumberSpace(HANDSHAKE_DATA)
.IsInitialized());
// Send packet 2.
SerializedPacket packet2(CreateRetransmittablePacket(2));
@@ -585,33 +586,34 @@
unacked_packets_.AddSentPacket(&packet2, NOT_RETRANSMISSION, now_, true);
EXPECT_EQ(QuicPacketNumber(2u), unacked_packets_.largest_sent_packet());
EXPECT_EQ(QuicPacketNumber(1),
- unacked_packets_.GetLargestSentPacketOfPacketNumberSpace(
- ENCRYPTION_INITIAL));
+ unacked_packets_.GetLargestSentRetransmittableOfPacketNumberSpace(
+ INITIAL_DATA));
EXPECT_EQ(QuicPacketNumber(2),
- unacked_packets_.GetLargestSentPacketOfPacketNumberSpace(
- ENCRYPTION_HANDSHAKE));
- EXPECT_FALSE(unacked_packets_
- .GetLargestSentPacketOfPacketNumberSpace(ENCRYPTION_ZERO_RTT)
- .IsInitialized());
+ unacked_packets_.GetLargestSentRetransmittableOfPacketNumberSpace(
+ HANDSHAKE_DATA));
+ EXPECT_FALSE(
+ unacked_packets_
+ .GetLargestSentRetransmittableOfPacketNumberSpace(APPLICATION_DATA)
+ .IsInitialized());
// Send packet 3.
SerializedPacket packet3(CreateRetransmittablePacket(3));
packet3.encryption_level = ENCRYPTION_ZERO_RTT;
unacked_packets_.AddSentPacket(&packet3, NOT_RETRANSMISSION, now_, true);
EXPECT_EQ(QuicPacketNumber(3u), unacked_packets_.largest_sent_packet());
EXPECT_EQ(QuicPacketNumber(1),
- unacked_packets_.GetLargestSentPacketOfPacketNumberSpace(
- ENCRYPTION_INITIAL));
+ unacked_packets_.GetLargestSentRetransmittableOfPacketNumberSpace(
+ INITIAL_DATA));
EXPECT_EQ(QuicPacketNumber(2),
- unacked_packets_.GetLargestSentPacketOfPacketNumberSpace(
- ENCRYPTION_HANDSHAKE));
+ unacked_packets_.GetLargestSentRetransmittableOfPacketNumberSpace(
+ HANDSHAKE_DATA));
EXPECT_EQ(QuicPacketNumber(3),
- unacked_packets_.GetLargestSentPacketOfPacketNumberSpace(
- ENCRYPTION_ZERO_RTT));
+ unacked_packets_.GetLargestSentRetransmittableOfPacketNumberSpace(
+ APPLICATION_DATA));
// Verify forward secure belongs to the same packet number space as encryption
// zero rtt.
EXPECT_EQ(QuicPacketNumber(3),
- unacked_packets_.GetLargestSentPacketOfPacketNumberSpace(
- ENCRYPTION_FORWARD_SECURE));
+ unacked_packets_.GetLargestSentRetransmittableOfPacketNumberSpace(
+ APPLICATION_DATA));
// Send packet 4.
SerializedPacket packet4(CreateRetransmittablePacket(4));
@@ -619,19 +621,19 @@
unacked_packets_.AddSentPacket(&packet4, NOT_RETRANSMISSION, now_, true);
EXPECT_EQ(QuicPacketNumber(4u), unacked_packets_.largest_sent_packet());
EXPECT_EQ(QuicPacketNumber(1),
- unacked_packets_.GetLargestSentPacketOfPacketNumberSpace(
- ENCRYPTION_INITIAL));
+ unacked_packets_.GetLargestSentRetransmittableOfPacketNumberSpace(
+ INITIAL_DATA));
EXPECT_EQ(QuicPacketNumber(2),
- unacked_packets_.GetLargestSentPacketOfPacketNumberSpace(
- ENCRYPTION_HANDSHAKE));
+ unacked_packets_.GetLargestSentRetransmittableOfPacketNumberSpace(
+ HANDSHAKE_DATA));
EXPECT_EQ(QuicPacketNumber(4),
- unacked_packets_.GetLargestSentPacketOfPacketNumberSpace(
- ENCRYPTION_ZERO_RTT));
+ unacked_packets_.GetLargestSentRetransmittableOfPacketNumberSpace(
+ APPLICATION_DATA));
// Verify forward secure belongs to the same packet number space as encryption
// zero rtt.
EXPECT_EQ(QuicPacketNumber(4),
- unacked_packets_.GetLargestSentPacketOfPacketNumberSpace(
- ENCRYPTION_FORWARD_SECURE));
+ unacked_packets_.GetLargestSentRetransmittableOfPacketNumberSpace(
+ APPLICATION_DATA));
}
} // namespace