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