gfe-relnote: In QUIC v47+, use variable packet number length in long header packet. Protected by DISABLED gfe2_reloadable_flag_quic_enable_version_47.
PiperOrigin-RevId: 253292288
Change-Id: Ife584a4c416dba0d63462b9a9e7f925917af6378
diff --git a/quic/core/quic_packet_creator.cc b/quic/core/quic_packet_creator.cc
index 7ba82e3..eb0596f 100644
--- a/quic/core/quic_packet_creator.cc
+++ b/quic/core/quic_packet_creator.cc
@@ -832,7 +832,8 @@
}
QuicPacketNumberLength QuicPacketCreator::GetPacketNumberLength() const {
- if (HasIetfLongHeader() && framer_->transport_version() != QUIC_VERSION_99) {
+ if (HasIetfLongHeader() &&
+ !framer_->version().SendsVariableLengthPacketNumberInLongHeader()) {
return PACKET_4BYTE_PACKET_NUMBER;
}
return packet_.packet_number_length;
diff --git a/quic/core/quic_packet_creator_test.cc b/quic/core/quic_packet_creator_test.cc
index d960342..a661c24 100644
--- a/quic/core/quic_packet_creator_test.cc
+++ b/quic/core/quic_packet_creator_test.cc
@@ -1108,7 +1108,7 @@
TEST_P(QuicPacketCreatorTest, UpdatePacketSequenceNumberLengthLeastAwaiting) {
if (VersionHasIetfInvariantHeader(GetParam().version.transport_version) &&
- GetParam().version.transport_version != QUIC_VERSION_99) {
+ !GetParam().version.SendsVariableLengthPacketNumberInLongHeader()) {
EXPECT_EQ(PACKET_4BYTE_PACKET_NUMBER,
QuicPacketCreatorPeer::GetPacketNumberLength(&creator_));
creator_.set_encryption_level(ENCRYPTION_FORWARD_SECURE);
@@ -1146,7 +1146,7 @@
TEST_P(QuicPacketCreatorTest, UpdatePacketSequenceNumberLengthCwnd) {
QuicPacketCreatorPeer::SetPacketNumber(&creator_, 1);
if (VersionHasIetfInvariantHeader(GetParam().version.transport_version) &&
- GetParam().version.transport_version != QUIC_VERSION_99) {
+ !GetParam().version.SendsVariableLengthPacketNumberInLongHeader()) {
EXPECT_EQ(PACKET_4BYTE_PACKET_NUMBER,
QuicPacketCreatorPeer::GetPacketNumberLength(&creator_));
creator_.set_encryption_level(ENCRYPTION_FORWARD_SECURE);
diff --git a/quic/core/quic_versions.cc b/quic/core/quic_versions.cc
index ecb6bd5..9c4027d 100644
--- a/quic/core/quic_versions.cc
+++ b/quic/core/quic_versions.cc
@@ -50,6 +50,10 @@
return transport_version > QUIC_VERSION_46;
}
+bool ParsedQuicVersion::SendsVariableLengthPacketNumberInLongHeader() const {
+ return transport_version > QUIC_VERSION_46;
+}
+
bool ParsedQuicVersion::SupportsClientConnectionIds() const {
if (!GetQuicRestartFlag(quic_do_not_override_connection_id)) {
// Do not enable this feature in a production version until this flag has
diff --git a/quic/core/quic_versions.h b/quic/core/quic_versions.h
index 8a64a12..dd10d96 100644
--- a/quic/core/quic_versions.h
+++ b/quic/core/quic_versions.h
@@ -163,6 +163,10 @@
// Returns whether this version supports IETF RETRY packets.
bool SupportsRetry() const;
+ // Returns true if this version sends variable length packet number in long
+ // header.
+ bool SendsVariableLengthPacketNumberInLongHeader() const;
+
// Returns whether this version supports client connection ID.
bool SupportsClientConnectionIds() const;
};