Deprecate Q048 and Q049 This CL also fully removes support for Q048 and Q049, now that we've fully deployed Q050 in production. Deprecate gfe2_reloadable_flag_quic_disable_version_q048 and gfe2_reloadable_flag_quic_disable_version_q049 PiperOrigin-RevId: 321174732 Change-Id: Ie0c7c3bd1291ac2c474b316837df2b43ed60f45d
diff --git a/quic/core/crypto/crypto_utils.cc b/quic/core/crypto/crypto_utils.cc index 3127ede..14c13fc 100644 --- a/quic/core/crypto/crypto_utils.cc +++ b/quic/core/crypto/crypto_utils.cc
@@ -141,7 +141,7 @@ const uint8_t* InitialSaltForVersion(const ParsedQuicVersion& version, size_t* out_len) { - static_assert(SupportedVersions().size() == 9u, + static_assert(SupportedVersions().size() == 7u, "Supported versions out of sync with initial encryption salts"); switch (version.handshake_protocol) { case PROTOCOL_QUIC_CRYPTO:
diff --git a/quic/core/quic_dispatcher_test.cc b/quic/core/quic_dispatcher_test.cc index 01ed4fb..1d84b06 100644 --- a/quic/core/quic_dispatcher_test.cc +++ b/quic/core/quic_dispatcher_test.cc
@@ -1085,12 +1085,38 @@ TEST_P(QuicDispatcherTestOneVersion, RejectDeprecatedVersionsWithVersionNegotiation) { - static_assert(quic::SupportedVersions().size() == 9u, + static_assert(quic::SupportedVersions().size() == 7u, "Please add deprecated versions to this test"); QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1); CreateTimeWaitListManager(); { + char packet49[kMinPacketSizeForVersionNegotiation] = { + 0xC0, 'Q', '0', '4', '9', /*connection ID length byte*/ 0x50}; + QuicReceivedPacket received_packet49( + packet49, kMinPacketSizeForVersionNegotiation, QuicTime::Zero()); + EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _)).Times(0); + EXPECT_CALL(*time_wait_list_manager_, + SendVersionNegotiationPacket(_, _, _, _, _, _, _, _)) + .Times(1); + dispatcher_->ProcessPacket(server_address_, client_address, + received_packet49); + } + + { + char packet48[kMinPacketSizeForVersionNegotiation] = { + 0xC0, 'Q', '0', '4', '8', /*connection ID length byte*/ 0x50}; + QuicReceivedPacket received_packet48( + packet48, kMinPacketSizeForVersionNegotiation, QuicTime::Zero()); + EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _)).Times(0); + EXPECT_CALL(*time_wait_list_manager_, + SendVersionNegotiationPacket(_, _, _, _, _, _, _, _)) + .Times(1); + dispatcher_->ProcessPacket(server_address_, client_address, + received_packet48); + } + + { char packet47[kMinPacketSizeForVersionNegotiation] = { 0xC0, 'Q', '0', '4', '7', /*connection ID length byte*/ 0x50}; QuicReceivedPacket received_packet47(
diff --git a/quic/core/quic_framer_test.cc b/quic/core/quic_framer_test.cc index 5a5a8fa..c610997 100644 --- a/quic/core/quic_framer_test.cc +++ b/quic/core/quic_framer_test.cc
@@ -1003,7 +1003,7 @@ // clang-format on unsigned char* p = packet; size_t p_size = QUICHE_ARRAYSIZE(packet); - if (framer_.transport_version() > QUIC_VERSION_43) { + if (framer_.version().HasIetfInvariantHeader()) { p = packet46; p_size = QUICHE_ARRAYSIZE(packet46); } @@ -1029,7 +1029,7 @@ } TEST_P(QuicFramerTest, PacketHeader) { - if (framer_.transport_version() > QUIC_VERSION_43) { + if (framer_.version().HasIetfInvariantHeader()) { return; } @@ -1108,7 +1108,7 @@ }; // clang-format on - if (framer_.transport_version() <= QUIC_VERSION_43 || + if (!framer_.version().HasIetfInvariantHeader() || QuicVersionHasLongHeaderLengths(framer_.transport_version())) { return; } @@ -1154,7 +1154,7 @@ } TEST_P(QuicFramerTest, LongPacketHeaderWithBothConnectionIds) { - if (framer_.transport_version() <= QUIC_VERSION_43) { + if (!framer_.version().HasIetfInvariantHeader()) { // This test requires an IETF long header. return; } @@ -1202,7 +1202,7 @@ unsigned char* p = packet; size_t p_length = QUICHE_ARRAYSIZE(packet); - if (framer_.transport_version() >= QUIC_VERSION_49) { + if (framer_.version().HasLongHeaderLengths()) { p = packet49; p_length = QUICHE_ARRAYSIZE(packet49); } @@ -1287,10 +1287,10 @@ // clang-format on unsigned char* p = packet; size_t p_length = QUICHE_ARRAYSIZE(packet); - if (framer_.transport_version() >= QUIC_VERSION_49) { + if (framer_.version().HasLongHeaderLengths()) { p = packet49; p_length = QUICHE_ARRAYSIZE(packet49); - } else if (framer_.transport_version() >= QUIC_VERSION_46) { + } else if (framer_.version().HasIetfInvariantHeader()) { p = packet46; p_length = QUICHE_ARRAYSIZE(packet46); } @@ -1507,8 +1507,7 @@ PacketFragments& fragments = framer_.version().HasHeaderProtection() ? packet_hp - : (framer_.transport_version() >= QUIC_VERSION_46 ? packet46 - : packet); + : (framer_.version().HasIetfInvariantHeader() ? packet46 : packet); std::unique_ptr<QuicEncryptedPacket> encrypted( AssemblePacketFromFragments(fragments)); EXPECT_FALSE(framer_.ProcessPacket(*encrypted)); @@ -1586,10 +1585,9 @@ // clang-format on PacketFragments& fragments = - framer_.transport_version() >= QUIC_VERSION_49 + framer_.version().HasLongHeaderLengths() ? packet49 - : (framer_.transport_version() >= QUIC_VERSION_46 ? packet46 - : packet); + : (framer_.version().HasIetfInvariantHeader() ? packet46 : packet); std::unique_ptr<QuicEncryptedPacket> encrypted( AssemblePacketFromFragments(fragments)); EXPECT_FALSE(framer_.ProcessPacket(*encrypted)); @@ -1650,8 +1648,7 @@ PacketFragments& fragments = framer_.version().HasHeaderProtection() ? packet_hp - : (framer_.transport_version() >= QUIC_VERSION_46 ? packet46 - : packet); + : (framer_.version().HasIetfInvariantHeader() ? packet46 : packet); std::unique_ptr<QuicEncryptedPacket> encrypted( AssemblePacketFromFragments(fragments)); EXPECT_FALSE(framer_.ProcessPacket(*encrypted)); @@ -1713,8 +1710,7 @@ PacketFragments& fragments = framer_.version().HasHeaderProtection() ? packet_hp - : (framer_.transport_version() >= QUIC_VERSION_46 ? packet46 - : packet); + : (framer_.version().HasIetfInvariantHeader() ? packet46 : packet); std::unique_ptr<QuicEncryptedPacket> encrypted( AssemblePacketFromFragments(fragments)); if (framer_.version().HasHeaderProtection()) { @@ -1783,8 +1779,7 @@ PacketFragments& fragments = framer_.version().HasHeaderProtection() ? packet_hp - : (framer_.transport_version() >= QUIC_VERSION_46 ? packet46 - : packet); + : (framer_.version().HasIetfInvariantHeader() ? packet46 : packet); std::unique_ptr<QuicEncryptedPacket> encrypted( AssemblePacketFromFragments(fragments)); if (framer_.version().HasHeaderProtection()) { @@ -1950,10 +1945,10 @@ unsigned char* p = packet; size_t p_size = QUICHE_ARRAYSIZE(packet); - if (framer_.transport_version() >= QUIC_VERSION_49) { + if (framer_.version().HasLongHeaderLengths()) { p = packet49; p_size = QUICHE_ARRAYSIZE(packet49); - } else if (framer_.transport_version() >= QUIC_VERSION_46) { + } else if (framer_.version().HasIetfInvariantHeader()) { p = packet46; p_size = QUICHE_ARRAYSIZE(packet46); } @@ -2025,10 +2020,10 @@ unsigned char* p = packet; size_t p_size = QUICHE_ARRAYSIZE(packet); - if (framer_.transport_version() >= QUIC_VERSION_49) { + if (framer_.version().HasLongHeaderLengths()) { p = packet49; p_size = QUICHE_ARRAYSIZE(packet49); - } else if (framer_.transport_version() >= QUIC_VERSION_46) { + } else if (framer_.version().HasIetfInvariantHeader()) { p = packet46; p_size = QUICHE_ARRAYSIZE(packet46); } @@ -2131,7 +2126,7 @@ if (VersionHasIetfQuicFrames(framer_.transport_version())) { p = packet99; p_size = QUICHE_ARRAYSIZE(packet99); - } else if (framer_.transport_version() >= QUIC_VERSION_46) { + } else if (framer_.version().HasIetfInvariantHeader()) { p = packet46; p_size = QUICHE_ARRAYSIZE(packet46); } @@ -2252,8 +2247,7 @@ PacketFragments& fragments = VersionHasIetfQuicFrames(framer_.transport_version()) ? packet99 - : (framer_.transport_version() >= QUIC_VERSION_46 ? packet46 - : packet); + : (framer_.version().HasIetfInvariantHeader() ? packet46 : packet); std::unique_ptr<QuicEncryptedPacket> encrypted( AssemblePacketFromFragments(fragments)); EXPECT_TRUE(framer_.ProcessPacket(*encrypted)); @@ -2398,10 +2392,10 @@ unsigned char* p = packet; size_t p_length = QUICHE_ARRAYSIZE(packet); - if (framer_.transport_version() >= QUIC_VERSION_49) { + if (framer_.version().HasLongHeaderLengths()) { p = packet49; p_length = QUICHE_ARRAYSIZE(packet49); - } else if (framer_.transport_version() >= QUIC_VERSION_46) { + } else if (framer_.version().HasIetfInvariantHeader()) { p = packet46; p_length = QUICHE_ARRAYSIZE(packet46); } @@ -2411,7 +2405,7 @@ EXPECT_THAT(framer_.error(), IsError(QUIC_DECRYPTION_FAILURE)); EXPECT_EQ("Unable to decrypt ENCRYPTION_ZERO_RTT header protection.", framer_.detailed_error()); - } else if (framer_.transport_version() >= QUIC_VERSION_46) { + } else if (framer_.version().HasIetfInvariantHeader()) { // Cannot read diversification nonce. EXPECT_THAT(framer_.error(), IsError(QUIC_INVALID_PACKET_HEADER)); EXPECT_EQ("Unable to read nonce.", framer_.detailed_error()); @@ -2421,7 +2415,7 @@ } TEST_P(QuicFramerTest, StreamFrame3ByteStreamId) { - if (framer_.transport_version() > QUIC_VERSION_43) { + if (framer_.version().HasIetfInvariantHeader()) { // This test is nonsensical for IETF Quic. return; } @@ -2576,8 +2570,7 @@ PacketFragments& fragments = VersionHasIetfQuicFrames(framer_.transport_version()) ? packet99 - : (framer_.transport_version() >= QUIC_VERSION_46 ? packet46 - : packet); + : (framer_.version().HasIetfInvariantHeader() ? packet46 : packet); std::unique_ptr<QuicEncryptedPacket> encrypted( AssemblePacketFromFragments(fragments)); EXPECT_TRUE(framer_.ProcessPacket(*encrypted)); @@ -2696,8 +2689,7 @@ PacketFragments& fragments = VersionHasIetfQuicFrames(framer_.transport_version()) ? packet99 - : (framer_.transport_version() >= QUIC_VERSION_46 ? packet46 - : packet); + : (framer_.version().HasIetfInvariantHeader() ? packet46 : packet); std::unique_ptr<QuicEncryptedPacket> encrypted( AssemblePacketFromFragments(fragments)); EXPECT_TRUE(framer_.ProcessPacket(*encrypted)); @@ -2896,10 +2888,10 @@ PacketFragments& fragments = VersionHasIetfQuicFrames(framer_.transport_version()) ? packet99 - : (framer_.transport_version() >= QUIC_VERSION_49 + : (framer_.version().HasLongHeaderLengths() ? packet49 - : (framer_.transport_version() >= QUIC_VERSION_46 ? packet46 - : packet)); + : (framer_.version().HasIetfInvariantHeader() ? packet46 + : packet)); std::unique_ptr<QuicEncryptedPacket> encrypted( AssemblePacketFromFragments(fragments)); EXPECT_TRUE(framer_.ProcessPacket(*encrypted)); @@ -2919,10 +2911,9 @@ EXPECT_EQ(kStreamOffset, visitor_.stream_frames_[0]->offset); CheckStreamFrameData("hello world!", visitor_.stream_frames_[0].get()); - CheckFramingBoundaries(fragments, - framer_.transport_version() >= QUIC_VERSION_49 - ? QUIC_INVALID_PACKET_HEADER - : QUIC_INVALID_STREAM_DATA); + CheckFramingBoundaries(fragments, framer_.version().HasLongHeaderLengths() + ? QUIC_INVALID_PACKET_HEADER + : QUIC_INVALID_STREAM_DATA); } TEST_P(QuicFramerTest, RejectPacket) { @@ -2978,11 +2969,11 @@ // clang-format on unsigned char* p = packet; - if (framer_.transport_version() >= QUIC_VERSION_46) { + if (framer_.version().HasIetfInvariantHeader()) { p = packet46; } QuicEncryptedPacket encrypted(AsChars(p), - framer_.transport_version() > QUIC_VERSION_43 + framer_.version().HasIetfInvariantHeader() ? QUICHE_ARRAYSIZE(packet46) : QUICHE_ARRAYSIZE(packet), false); @@ -3019,13 +3010,12 @@ }; // clang-format on - QuicEncryptedPacket encrypted(framer_.transport_version() >= QUIC_VERSION_46 - ? AsChars(packet46) - : AsChars(packet), - framer_.transport_version() >= QUIC_VERSION_46 - ? QUICHE_ARRAYSIZE(packet46) - : QUICHE_ARRAYSIZE(packet), - false); + QuicEncryptedPacket encrypted( + framer_.version().HasIetfInvariantHeader() ? AsChars(packet46) + : AsChars(packet), + framer_.version().HasIetfInvariantHeader() ? QUICHE_ARRAYSIZE(packet46) + : QUICHE_ARRAYSIZE(packet), + false); EXPECT_TRUE(framer_.ProcessPacket(encrypted)); EXPECT_THAT(framer_.error(), IsQuicNoError()); @@ -3131,8 +3121,7 @@ PacketFragments& fragments = VersionHasIetfQuicFrames(framer_.transport_version()) ? packet99 - : (framer_.transport_version() >= QUIC_VERSION_46 ? packet46 - : packet); + : (framer_.version().HasIetfInvariantHeader() ? packet46 : packet); std::unique_ptr<QuicEncryptedPacket> encrypted( AssemblePacketFromFragments(fragments)); EXPECT_TRUE(framer_.ProcessPacket(*encrypted)); @@ -3245,8 +3234,7 @@ PacketFragments& fragments = VersionHasIetfQuicFrames(framer_.transport_version()) ? packet99 - : (framer_.transport_version() >= QUIC_VERSION_46 ? packet46 - : packet); + : (framer_.version().HasIetfInvariantHeader() ? packet46 : packet); std::unique_ptr<QuicEncryptedPacket> encrypted( AssemblePacketFromFragments(fragments)); EXPECT_FALSE(framer_.ProcessPacket(*encrypted)); @@ -3624,7 +3612,7 @@ // clang-format on PacketFragments& fragments = - framer_.transport_version() >= QUIC_VERSION_46 ? packet46 : packet; + framer_.version().HasIetfInvariantHeader() ? packet46 : packet; std::unique_ptr<QuicEncryptedPacket> encrypted( AssemblePacketFromFragments(fragments)); @@ -3733,8 +3721,7 @@ PacketFragments& fragments = VersionHasIetfQuicFrames(framer_.transport_version()) ? packet99 - : (framer_.transport_version() >= QUIC_VERSION_46 ? packet46 - : packet); + : (framer_.version().HasIetfInvariantHeader() ? packet46 : packet); std::unique_ptr<QuicEncryptedPacket> encrypted( AssemblePacketFromFragments(fragments)); EXPECT_TRUE(framer_.ProcessPacket(*encrypted)); @@ -3955,8 +3942,7 @@ PacketFragments& fragments = VersionHasIetfQuicFrames(framer_.transport_version()) ? packet99 - : (framer_.transport_version() >= QUIC_VERSION_46 ? packet46 - : packet); + : (framer_.version().HasIetfInvariantHeader() ? packet46 : packet); std::unique_ptr<QuicEncryptedPacket> encrypted( AssemblePacketFromFragments(fragments)); @@ -4042,8 +4028,7 @@ return; } QuicEncryptedPacket encrypted( - AsChars(framer_.transport_version() >= QUIC_VERSION_46 ? packet46 - : packet), + AsChars(framer_.version().HasIetfInvariantHeader() ? packet46 : packet), QUICHE_ARRAYSIZE(packet), false); EXPECT_FALSE(framer_.ProcessPacket(encrypted)); EXPECT_TRUE(quiche::QuicheTextUtils::StartsWith( @@ -4116,8 +4101,7 @@ return; } QuicEncryptedPacket encrypted( - AsChars(framer_.transport_version() >= QUIC_VERSION_46 ? packet46 - : packet), + AsChars(framer_.version().HasIetfInvariantHeader() ? packet46 : packet), QUICHE_ARRAYSIZE(packet), false); EXPECT_FALSE(framer_.ProcessPacket(encrypted)); EXPECT_TRUE(quiche::QuicheTextUtils::StartsWith( @@ -4169,12 +4153,12 @@ // clang-format on PacketFragments& fragments = - framer_.transport_version() >= QUIC_VERSION_46 ? packet46 : packet; + framer_.version().HasIetfInvariantHeader() ? packet46 : packet; std::unique_ptr<QuicEncryptedPacket> encrypted( AssemblePacketFromFragments(fragments)); if (GetQuicReloadableFlag(quic_do_not_accept_stop_waiting) && - version_.transport_version >= QUIC_VERSION_46) { + framer_.version().HasIetfInvariantHeader()) { EXPECT_FALSE(framer_.ProcessPacket(*encrypted)); EXPECT_THAT(framer_.error(), IsError(QUIC_INVALID_STOP_WAITING_DATA)); EXPECT_EQ("STOP WAITING not supported in version 44+.", @@ -4202,7 +4186,7 @@ // The Stop Waiting frame is not in IETF QUIC if (VersionHasIetfQuicFrames(version_.transport_version) || (GetQuicReloadableFlag(quic_do_not_accept_stop_waiting) && - version_.transport_version >= QUIC_VERSION_46)) { + framer_.version().HasIetfInvariantHeader())) { return; } SetDecrypterLevel(ENCRYPTION_FORWARD_SECURE); @@ -4236,10 +4220,9 @@ // clang-format on QuicEncryptedPacket encrypted( - AsChars(framer_.transport_version() >= QUIC_VERSION_46 ? packet46 - : packet), - framer_.transport_version() > QUIC_VERSION_43 ? QUICHE_ARRAYSIZE(packet46) - : QUICHE_ARRAYSIZE(packet), + AsChars(framer_.version().HasIetfInvariantHeader() ? packet46 : packet), + framer_.version().HasIetfInvariantHeader() ? QUICHE_ARRAYSIZE(packet46) + : QUICHE_ARRAYSIZE(packet), false); EXPECT_FALSE(framer_.ProcessPacket(encrypted)); EXPECT_THAT(framer_.error(), IsError(QUIC_INVALID_STOP_WAITING_DATA)); @@ -4328,8 +4311,7 @@ PacketFragments& fragments = VersionHasIetfQuicFrames(framer_.transport_version()) ? packet99 - : (framer_.transport_version() >= QUIC_VERSION_46 ? packet46 - : packet); + : (framer_.version().HasIetfInvariantHeader() ? packet46 : packet); std::unique_ptr<QuicEncryptedPacket> encrypted( AssemblePacketFromFragments(fragments)); EXPECT_TRUE(framer_.ProcessPacket(*encrypted)); @@ -4439,8 +4421,7 @@ PacketFragments& fragments = VersionHasIetfQuicFrames(framer_.transport_version()) ? packet99 - : (framer_.transport_version() >= QUIC_VERSION_46 ? packet46 - : packet); + : (framer_.version().HasIetfInvariantHeader() ? packet46 : packet); std::unique_ptr<QuicEncryptedPacket> encrypted( AssemblePacketFromFragments(fragments)); EXPECT_TRUE(framer_.ProcessPacket(*encrypted)); @@ -4572,8 +4553,7 @@ PacketFragments& fragments = VersionHasIetfQuicFrames(framer_.transport_version()) ? packet99 - : (framer_.transport_version() >= QUIC_VERSION_46 ? packet46 - : packet); + : (framer_.version().HasIetfInvariantHeader() ? packet46 : packet); std::unique_ptr<QuicEncryptedPacket> encrypted( AssemblePacketFromFragments(fragments)); EXPECT_TRUE(framer_.ProcessPacket(*encrypted)); @@ -4802,7 +4782,7 @@ // clang-format on PacketFragments& fragments = - framer_.transport_version() >= QUIC_VERSION_46 ? packet46 : packet; + framer_.version().HasIetfInvariantHeader() ? packet46 : packet; std::unique_ptr<QuicEncryptedPacket> encrypted( AssemblePacketFromFragments(fragments)); EXPECT_TRUE(framer_.ProcessPacket(*encrypted)); @@ -4875,7 +4855,7 @@ // clang-format on PacketFragments& fragments = - framer_.transport_version() >= QUIC_VERSION_46 ? packet46 : packet; + framer_.version().HasIetfInvariantHeader() ? packet46 : packet; std::unique_ptr<QuicEncryptedPacket> encrypted( AssemblePacketFromFragments(fragments)); EXPECT_TRUE(framer_.ProcessPacket(*encrypted)); @@ -5046,8 +5026,7 @@ PacketFragments& fragments = VersionHasIetfQuicFrames(framer_.transport_version()) ? packet99 - : (framer_.transport_version() >= QUIC_VERSION_46 ? packet46 - : packet); + : (framer_.version().HasIetfInvariantHeader() ? packet46 : packet); std::unique_ptr<QuicEncryptedPacket> encrypted( AssemblePacketFromFragments(fragments)); EXPECT_TRUE(framer_.ProcessPacket(*encrypted)); @@ -5115,11 +5094,11 @@ QuicEncryptedPacket encrypted( AsChars(VersionHasIetfQuicFrames(framer_.transport_version()) ? packet99 - : (framer_.transport_version() >= QUIC_VERSION_46 ? packet46 - : packet)), + : (framer_.version().HasIetfInvariantHeader() ? packet46 + : packet)), VersionHasIetfQuicFrames(framer_.transport_version()) ? QUICHE_ARRAYSIZE(packet99) - : (framer_.transport_version() >= QUIC_VERSION_46 + : (framer_.version().HasIetfInvariantHeader() ? QUICHE_ARRAYSIZE(packet46) : QUICHE_ARRAYSIZE(packet)), false); @@ -5333,7 +5312,7 @@ } }; // clang-format on - if (framer_.transport_version() > QUIC_VERSION_43) { + if (framer_.version().HasIetfInvariantHeader()) { return; } @@ -5388,7 +5367,7 @@ }; // clang-format on - if (framer_.transport_version() > QUIC_VERSION_43) { + if (framer_.version().HasIetfInvariantHeader()) { return; } @@ -5436,7 +5415,7 @@ 'j', 'u', 'n', 'k', }; // clang-format on - if (framer_.transport_version() > QUIC_VERSION_43) { + if (framer_.version().HasIetfInvariantHeader()) { return; } @@ -5488,7 +5467,7 @@ } }; // clang-format on - if (framer_.transport_version() > QUIC_VERSION_43) { + if (framer_.version().HasIetfInvariantHeader()) { return; } @@ -5522,7 +5501,7 @@ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; // clang-format on - if (framer_.transport_version() <= QUIC_VERSION_43) { + if (!framer_.version().HasIetfInvariantHeader()) { return; } QuicFramerPeer::SetPerspective(&framer_, Perspective::IS_CLIENT); @@ -5566,7 +5545,7 @@ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; // clang-format on - if (framer_.transport_version() <= QUIC_VERSION_43) { + if (!framer_.version().HasIetfInvariantHeader()) { return; } QuicFramerPeer::SetLastSerializedServerConnectionId(&framer_, @@ -5650,9 +5629,9 @@ QuicFramerPeer::SetPerspective(&framer_, Perspective::IS_CLIENT); PacketFragments& fragments = - framer_.transport_version() >= QUIC_VERSION_49 - ? packet49 - : framer_.transport_version() > QUIC_VERSION_43 ? packet46 : packet; + framer_.version().HasLongHeaderLengths() ? packet49 + : framer_.version().HasIetfInvariantHeader() ? packet46 + : packet; std::unique_ptr<QuicEncryptedPacket> encrypted( AssemblePacketFromFragments(fragments)); EXPECT_TRUE(framer_.ProcessPacket(*encrypted)); @@ -5671,7 +5650,7 @@ } TEST_P(QuicFramerTest, VersionNegotiationPacketServer) { - if (framer_.transport_version() <= QUIC_VERSION_43) { + if (!framer_.version().HasIetfInvariantHeader()) { return; } @@ -5738,7 +5717,7 @@ }; // clang-format on - if (framer_.transport_version() > QUIC_VERSION_43) { + if (framer_.version().HasIetfInvariantHeader()) { return; } @@ -5827,7 +5806,7 @@ if (framer_.version().HasRetryIntegrityTag()) { p = packet_with_tag; p_length = QUICHE_ARRAYSIZE(packet_with_tag); - } else if (framer_.transport_version() >= QUIC_VERSION_49) { + } else if (framer_.version().HasLongHeaderLengths()) { p = packet49; p_length = QUICHE_ARRAYSIZE(packet49); } @@ -5944,7 +5923,7 @@ unsigned char* p = packet; if (VersionHasIetfQuicFrames(framer_.transport_version())) { p = packet99; - } else if (framer_.transport_version() >= QUIC_VERSION_46) { + } else if (framer_.version().HasIetfInvariantHeader()) { p = packet46; } @@ -5960,8 +5939,8 @@ quiche::test::CompareCharArraysWithHexError( "constructed packet", data->data(), data->length(), AsChars(p), - framer_.transport_version() > QUIC_VERSION_43 ? QUICHE_ARRAYSIZE(packet46) - : QUICHE_ARRAYSIZE(packet)); + framer_.version().HasIetfInvariantHeader() ? QUICHE_ARRAYSIZE(packet46) + : QUICHE_ARRAYSIZE(packet)); } TEST_P(QuicFramerTest, BuildStreamFramePacketWithNewPaddingFrame) { @@ -6068,7 +6047,7 @@ if (VersionHasIetfQuicFrames(framer_.transport_version())) { p = packet99; p_size = QUICHE_ARRAYSIZE(packet99); - } else if (framer_.transport_version() >= QUIC_VERSION_46) { + } else if (framer_.version().HasIetfInvariantHeader()) { p = packet46; p_size = QUICHE_ARRAYSIZE(packet46); } @@ -6133,7 +6112,7 @@ unsigned char* p = packet; if (VersionHasIetfQuicFrames(framer_.transport_version())) { p = packet99; - } else if (framer_.transport_version() >= QUIC_VERSION_46) { + } else if (framer_.version().HasIetfInvariantHeader()) { p = packet46; } @@ -6149,8 +6128,8 @@ quiche::test::CompareCharArraysWithHexError( "constructed packet", data->data(), data->length(), AsChars(p), - framer_.transport_version() > QUIC_VERSION_43 ? QUICHE_ARRAYSIZE(packet46) - : QUICHE_ARRAYSIZE(packet)); + framer_.version().HasIetfInvariantHeader() ? QUICHE_ARRAYSIZE(packet46) + : QUICHE_ARRAYSIZE(packet)); } TEST_P(QuicFramerTest, Build2ByteSequenceNumberPaddingFramePacket) { @@ -6208,7 +6187,7 @@ unsigned char* p = packet; if (VersionHasIetfQuicFrames(framer_.transport_version())) { p = packet99; - } else if (framer_.transport_version() >= QUIC_VERSION_46) { + } else if (framer_.version().HasIetfInvariantHeader()) { p = packet46; } @@ -6224,8 +6203,8 @@ quiche::test::CompareCharArraysWithHexError( "constructed packet", data->data(), data->length(), AsChars(p), - framer_.transport_version() > QUIC_VERSION_43 ? QUICHE_ARRAYSIZE(packet46) - : QUICHE_ARRAYSIZE(packet)); + framer_.version().HasIetfInvariantHeader() ? QUICHE_ARRAYSIZE(packet46) + : QUICHE_ARRAYSIZE(packet)); } TEST_P(QuicFramerTest, Build1ByteSequenceNumberPaddingFramePacket) { @@ -6283,7 +6262,7 @@ unsigned char* p = packet; if (VersionHasIetfQuicFrames(framer_.transport_version())) { p = packet99; - } else if (framer_.transport_version() >= QUIC_VERSION_46) { + } else if (framer_.version().HasIetfInvariantHeader()) { p = packet46; } @@ -6299,8 +6278,8 @@ quiche::test::CompareCharArraysWithHexError( "constructed packet", data->data(), data->length(), AsChars(p), - framer_.transport_version() > QUIC_VERSION_43 ? QUICHE_ARRAYSIZE(packet46) - : QUICHE_ARRAYSIZE(packet)); + framer_.version().HasIetfInvariantHeader() ? QUICHE_ARRAYSIZE(packet46) + : QUICHE_ARRAYSIZE(packet)); } TEST_P(QuicFramerTest, BuildStreamFramePacket) { @@ -6392,7 +6371,7 @@ if (VersionHasIetfQuicFrames(framer_.transport_version())) { p = packet99; p_size = QUICHE_ARRAYSIZE(packet99); - } else if (framer_.transport_version() >= QUIC_VERSION_46) { + } else if (framer_.version().HasIetfInvariantHeader()) { p = packet46; p_size = QUICHE_ARRAYSIZE(packet46); } @@ -6405,7 +6384,7 @@ header.destination_connection_id = FramerTestConnectionId(); header.reset_flag = false; header.version_flag = true; - if (framer_.transport_version() > QUIC_VERSION_43) { + if (framer_.version().HasIetfInvariantHeader()) { header.long_packet_type = ZERO_RTT_PROTECTED; } header.packet_number = kPacketNumber; @@ -6522,10 +6501,10 @@ if (VersionHasIetfQuicFrames(framer_.transport_version())) { p = packet99; p_size = QUICHE_ARRAYSIZE(packet99); - } else if (framer_.transport_version() >= QUIC_VERSION_49) { + } else if (framer_.version().HasLongHeaderLengths()) { p = packet49; p_size = QUICHE_ARRAYSIZE(packet49); - } else if (framer_.transport_version() >= QUIC_VERSION_46) { + } else if (framer_.version().HasIetfInvariantHeader()) { p = packet46; p_size = QUICHE_ARRAYSIZE(packet46); } @@ -6740,10 +6719,10 @@ // clang-format on unsigned char* p = packet; size_t p_size = QUICHE_ARRAYSIZE(packet); - if (framer_.transport_version() >= QUIC_VERSION_49) { + if (framer_.version().HasLongHeaderLengths()) { p = packet49; p_size = QUICHE_ARRAYSIZE(packet49); - } else if (framer_.transport_version() > QUIC_VERSION_43) { + } else if (framer_.version().HasIetfInvariantHeader()) { p = packet46; p_size = QUICHE_ARRAYSIZE(packet46); } @@ -6752,7 +6731,7 @@ std::unique_ptr<QuicEncryptedPacket> data( QuicFramer::BuildVersionNegotiationPacket( connection_id, EmptyQuicConnectionId(), - framer_.transport_version() > QUIC_VERSION_43, + framer_.version().HasIetfInvariantHeader(), framer_.version().HasLengthPrefixedConnectionIds(), SupportedVersions(GetParam()))); quiche::test::CompareCharArraysWithHexError( @@ -6877,7 +6856,7 @@ if (VersionHasIetfQuicFrames(framer_.transport_version())) { p = packet99; p_size = QUICHE_ARRAYSIZE(packet99); - } else if (framer_.transport_version() >= QUIC_VERSION_46) { + } else if (framer_.version().HasIetfInvariantHeader()) { p = packet46; p_size = QUICHE_ARRAYSIZE(packet46); } @@ -6970,7 +6949,7 @@ if (VersionHasIetfQuicFrames(framer_.transport_version())) { p = packet99; p_size = QUICHE_ARRAYSIZE(packet99); - } else if (framer_.transport_version() >= QUIC_VERSION_46) { + } else if (framer_.version().HasIetfInvariantHeader()) { p = packet46; p_size = QUICHE_ARRAYSIZE(packet46); } @@ -7118,7 +7097,7 @@ if (VersionHasIetfQuicFrames(framer_.transport_version())) { p = packet99; p_size = QUICHE_ARRAYSIZE(packet99); - } else if (framer_.transport_version() >= QUIC_VERSION_46) { + } else if (framer_.version().HasIetfInvariantHeader()) { p = packet46; p_size = QUICHE_ARRAYSIZE(packet46); } @@ -7427,7 +7406,7 @@ if (VersionHasIetfQuicFrames(framer_.transport_version())) { p = packet99; p_size = QUICHE_ARRAYSIZE(packet99); - } else if (framer_.transport_version() >= QUIC_VERSION_46) { + } else if (framer_.version().HasIetfInvariantHeader()) { p = packet46; p_size = QUICHE_ARRAYSIZE(packet46); } @@ -7440,7 +7419,7 @@ } TEST_P(QuicFramerTest, BuildNewStopWaitingPacket) { - if (version_.transport_version > QUIC_VERSION_43) { + if (framer_.version().HasIetfInvariantHeader()) { return; } QuicFramerPeer::SetPerspective(&framer_, Perspective::IS_CLIENT); @@ -7565,7 +7544,7 @@ if (VersionHasIetfQuicFrames(framer_.transport_version())) { p = packet99; p_size = QUICHE_ARRAYSIZE(packet99); - } else if (framer_.transport_version() >= QUIC_VERSION_46) { + } else if (framer_.version().HasIetfInvariantHeader()) { p = packet46; p_size = QUICHE_ARRAYSIZE(packet46); } @@ -7659,7 +7638,7 @@ if (VersionHasIetfQuicFrames(framer_.transport_version())) { p = packet99; p_size = QUICHE_ARRAYSIZE(packet99); - } else if (framer_.transport_version() >= QUIC_VERSION_46) { + } else if (framer_.version().HasIetfInvariantHeader()) { p = packet46; p_size = QUICHE_ARRAYSIZE(packet46); } @@ -7765,7 +7744,7 @@ if (VersionHasIetfQuicFrames(framer_.transport_version())) { p = packet99; p_size = QUICHE_ARRAYSIZE(packet99); - } else if (framer_.transport_version() >= QUIC_VERSION_46) { + } else if (framer_.version().HasIetfInvariantHeader()) { p = packet46; p_size = QUICHE_ARRAYSIZE(packet46); } @@ -7946,7 +7925,7 @@ if (VersionHasIetfQuicFrames(framer_.transport_version())) { p = packet99; p_size = QUICHE_ARRAYSIZE(packet99); - } else if (framer_.transport_version() >= QUIC_VERSION_46) { + } else if (framer_.version().HasIetfInvariantHeader()) { p = packet46; p_size = QUICHE_ARRAYSIZE(packet46); } @@ -8160,7 +8139,7 @@ unsigned char* p = packet; size_t p_size = QUICHE_ARRAYSIZE(packet); - if (framer_.transport_version() > QUIC_VERSION_43) { + if (framer_.version().HasIetfInvariantHeader()) { p = packet46; p_size = QUICHE_ARRAYSIZE(packet46); } @@ -8297,7 +8276,7 @@ unsigned char* p = packet; size_t p_size = QUICHE_ARRAYSIZE(packet); - if (framer_.transport_version() > QUIC_VERSION_43) { + if (framer_.version().HasIetfInvariantHeader()) { p = packet46; p_size = QUICHE_ARRAYSIZE(packet46); } @@ -8384,7 +8363,7 @@ if (VersionHasIetfQuicFrames(framer_.transport_version())) { p = packet99; p_size = QUICHE_ARRAYSIZE(packet99); - } else if (framer_.transport_version() >= QUIC_VERSION_46) { + } else if (framer_.version().HasIetfInvariantHeader()) { p = packet46; p_size = QUICHE_ARRAYSIZE(packet46); } @@ -8556,7 +8535,7 @@ if (VersionHasIetfQuicFrames(framer_.transport_version())) { p = packet99; p_size = QUICHE_ARRAYSIZE(packet99); - } else if (framer_.transport_version() >= QUIC_VERSION_46) { + } else if (framer_.version().HasIetfInvariantHeader()) { p = packet46; p_size = QUICHE_ARRAYSIZE(packet46); } @@ -8616,7 +8595,7 @@ unsigned char* p = packet; if (VersionHasIetfQuicFrames(framer_.transport_version())) { p = packet99; - } else if (framer_.transport_version() >= QUIC_VERSION_46) { + } else if (framer_.version().HasIetfInvariantHeader()) { p = packet46; } @@ -8625,8 +8604,8 @@ quiche::test::CompareCharArraysWithHexError( "constructed packet", data->data(), data->length(), AsChars(p), - framer_.transport_version() > QUIC_VERSION_43 ? QUICHE_ARRAYSIZE(packet46) - : QUICHE_ARRAYSIZE(packet)); + framer_.version().HasIetfInvariantHeader() ? QUICHE_ARRAYSIZE(packet46) + : QUICHE_ARRAYSIZE(packet)); } TEST_P(QuicFramerTest, BuildHandshakeDonePacket) { @@ -8836,14 +8815,14 @@ unsigned char* p = packet; if (VersionHasIetfQuicFrames(framer_.transport_version())) { p = packet99; - } else if (framer_.transport_version() >= QUIC_VERSION_46) { + } else if (framer_.version().HasIetfInvariantHeader()) { p = packet46; } quiche::test::CompareCharArraysWithHexError( "constructed packet", data->data(), data->length(), AsChars(p), - framer_.transport_version() > QUIC_VERSION_43 ? QUICHE_ARRAYSIZE(packet46) - : QUICHE_ARRAYSIZE(packet)); + framer_.version().HasIetfInvariantHeader() ? QUICHE_ARRAYSIZE(packet46) + : QUICHE_ARRAYSIZE(packet)); } TEST_P(QuicFramerTest, BuildPublicResetPacket) { @@ -8871,7 +8850,7 @@ }; // clang-format on - if (framer_.transport_version() > QUIC_VERSION_43) { + if (framer_.version().HasIetfInvariantHeader()) { return; } @@ -8919,7 +8898,7 @@ }; // clang-format on - if (framer_.transport_version() > QUIC_VERSION_43) { + if (framer_.version().HasIetfInvariantHeader()) { return; } @@ -8991,7 +8970,7 @@ }; // clang-format on - if (framer_.transport_version() > QUIC_VERSION_43) { + if (framer_.version().HasIetfInvariantHeader()) { return; } @@ -9096,10 +9075,10 @@ unsigned char* p = packet; size_t p_size = QUICHE_ARRAYSIZE(packet); - if (framer_.transport_version() >= QUIC_VERSION_50) { + if (framer_.version().HasHeaderProtection()) { p = packet50; p_size = QUICHE_ARRAYSIZE(packet50); - } else if (framer_.transport_version() >= QUIC_VERSION_46) { + } else if (framer_.version().HasIetfInvariantHeader()) { p = packet46; } @@ -9200,10 +9179,10 @@ unsigned char* p = packet; size_t p_size = QUICHE_ARRAYSIZE(packet); // TODO(ianswett): see todo in previous test. - if (framer_.transport_version() >= QUIC_VERSION_50) { + if (framer_.version().HasHeaderProtection()) { p = packet50; p_size = QUICHE_ARRAYSIZE(packet50); - } else if (framer_.transport_version() >= QUIC_VERSION_46) { + } else if (framer_.version().HasIetfInvariantHeader()) { p = packet46; p_size = QUICHE_ARRAYSIZE(packet46); } @@ -9535,7 +9514,7 @@ if (VersionHasIetfQuicFrames(framer_.transport_version())) { p = packet99; p_size = QUICHE_ARRAYSIZE(packet99); - } else if (framer_.transport_version() >= QUIC_VERSION_46) { + } else if (framer_.version().HasIetfInvariantHeader()) { p = packet46; p_size = QUICHE_ARRAYSIZE(packet46); } @@ -12086,7 +12065,7 @@ if (VersionHasIetfQuicFrames(framer_.transport_version())) { p = packet99; p_size = QUICHE_ARRAYSIZE(packet99); - } else if (framer_.transport_version() >= QUIC_VERSION_46) { + } else if (framer_.version().HasIetfInvariantHeader()) { p = packet46; } @@ -12164,7 +12143,7 @@ if (VersionHasIetfQuicFrames(framer_.transport_version())) { p = packet99; p_size = QUICHE_ARRAYSIZE(packet99); - } else if (framer_.transport_version() >= QUIC_VERSION_46) { + } else if (framer_.version().HasIetfInvariantHeader()) { p = packet46; p_size = QUICHE_ARRAYSIZE(packet46); } @@ -12272,7 +12251,7 @@ if (VersionHasIetfQuicFrames(framer_.transport_version())) { p = packet99; p_size = QUICHE_ARRAYSIZE(packet99); - } else if (framer_.transport_version() >= QUIC_VERSION_46) { + } else if (framer_.version().HasIetfInvariantHeader()) { p = packet46; p_size = QUICHE_ARRAYSIZE(packet46); } @@ -12793,10 +12772,10 @@ // clang-format on unsigned char* p = packet; size_t p_length = QUICHE_ARRAYSIZE(packet); - if (framer_.transport_version() >= QUIC_VERSION_49) { + if (framer_.version().HasLongHeaderLengths()) { p = packet49; p_length = QUICHE_ARRAYSIZE(packet49); - } else if (framer_.transport_version() >= QUIC_VERSION_46) { + } else if (framer_.version().HasIetfInvariantHeader()) { p = packet46; p_length = QUICHE_ARRAYSIZE(packet46); } @@ -12895,10 +12874,10 @@ // clang-format on unsigned char* p = packet; size_t p_length = QUICHE_ARRAYSIZE(packet); - if (framer_.transport_version() >= QUIC_VERSION_49) { + if (framer_.version().HasLongHeaderLengths()) { p = packet49; p_length = QUICHE_ARRAYSIZE(packet49); - } else if (framer_.transport_version() >= QUIC_VERSION_46) { + } else if (framer_.version().HasIetfInvariantHeader()) { p = packet46; p_length = QUICHE_ARRAYSIZE(packet46); } @@ -13413,7 +13392,7 @@ } TEST_P(QuicFramerTest, ClientReceivesInvalidVersion) { - if (framer_.transport_version() <= QUIC_VERSION_43) { + if (!framer_.version().HasIetfInvariantHeader()) { return; } QuicFramerPeer::SetPerspective(&framer_, Perspective::IS_CLIENT); @@ -13506,7 +13485,7 @@ } TEST_P(QuicFramerTest, MultiplePacketNumberSpaces) { - if (framer_.transport_version() < QUIC_VERSION_46) { + if (!framer_.version().HasIetfInvariantHeader()) { return; } framer_.EnableMultiplePacketNumberSpacesSupport(); @@ -13642,7 +13621,7 @@ } TEST_P(QuicFramerTest, RetryPacketRejectedWithMultiplePacketNumberSpaces) { - if (framer_.transport_version() < QUIC_VERSION_46 || + if (!framer_.version().HasIetfInvariantHeader() || framer_.version().SupportsRetry()) { return; } @@ -13804,7 +13783,7 @@ QuicEncryptedPacket encrypted(reinterpret_cast<const char*>(packet), sizeof(packet), false); // Make sure we fail to parse this packet for the version under test. - if (framer_.transport_version() <= QUIC_VERSION_43) { + if (!framer_.version().HasIetfInvariantHeader()) { // We can only parse the connection ID with an IETF parser. EXPECT_FALSE(framer_.ProcessPacket(encrypted)); return; @@ -14136,7 +14115,7 @@ } TEST_P(QuicFramerTest, ClientConnectionIdFromLongHeaderToClient) { - if (framer_.transport_version() <= QUIC_VERSION_43) { + if (!framer_.version().HasIetfInvariantHeader()) { // This test requires an IETF long header. return; } @@ -14182,7 +14161,7 @@ // clang-format on unsigned char* p = packet; size_t p_length = QUICHE_ARRAYSIZE(packet); - if (framer_.transport_version() >= QUIC_VERSION_49) { + if (framer_.version().HasLongHeaderLengths()) { p = packet49; p_length = QUICHE_ARRAYSIZE(packet49); } @@ -14203,7 +14182,7 @@ } TEST_P(QuicFramerTest, ClientConnectionIdFromLongHeaderToServer) { - if (framer_.transport_version() <= QUIC_VERSION_43) { + if (!framer_.version().HasIetfInvariantHeader()) { // This test requires an IETF long header. return; } @@ -14247,7 +14226,7 @@ // clang-format on unsigned char* p = packet; size_t p_length = QUICHE_ARRAYSIZE(packet); - if (framer_.transport_version() >= QUIC_VERSION_49) { + if (framer_.version().HasLongHeaderLengths()) { p = packet49; p_length = QUICHE_ARRAYSIZE(packet49); } @@ -14275,7 +14254,7 @@ } TEST_P(QuicFramerTest, ProcessAndValidateIetfConnectionIdLengthClient) { - if (framer_.transport_version() <= QUIC_VERSION_43) { + if (!framer_.version().HasIetfInvariantHeader()) { // This test requires an IETF long header. return; } @@ -14313,7 +14292,7 @@ } TEST_P(QuicFramerTest, ProcessAndValidateIetfConnectionIdLengthServer) { - if (framer_.transport_version() <= QUIC_VERSION_43) { + if (!framer_.version().HasIetfInvariantHeader()) { // This test requires an IETF long header. return; }
diff --git a/quic/core/quic_version_manager.cc b/quic/core/quic_version_manager.cc index 90c4982..0563797 100644 --- a/quic/core/quic_version_manager.cc +++ b/quic/core/quic_version_manager.cc
@@ -23,12 +23,10 @@ GetQuicReloadableFlag(quic_disable_version_draft_25)), disable_version_q050_(GetQuicReloadableFlag(quic_disable_version_q050)), disable_version_t050_(GetQuicReloadableFlag(quic_disable_version_t050)), - disable_version_q049_(GetQuicReloadableFlag(quic_disable_version_q049)), - disable_version_q048_(GetQuicReloadableFlag(quic_disable_version_q048)), disable_version_q046_(GetQuicReloadableFlag(quic_disable_version_q046)), disable_version_q043_(GetQuicReloadableFlag(quic_disable_version_q043)), allowed_supported_versions_(std::move(supported_versions)) { - static_assert(SupportedVersions().size() == 9u, + static_assert(SupportedVersions().size() == 7u, "Supported versions out of sync"); RefilterSupportedVersions(); } @@ -58,7 +56,7 @@ } void QuicVersionManager::MaybeRefilterSupportedVersions() { - static_assert(SupportedVersions().size() == 9u, + static_assert(SupportedVersions().size() == 7u, "Supported versions out of sync"); if (enable_version_draft_29_ != GetQuicReloadableFlag(quic_enable_version_draft_29) || @@ -70,10 +68,6 @@ GetQuicReloadableFlag(quic_disable_version_q050) || disable_version_t050_ != GetQuicReloadableFlag(quic_disable_version_t050) || - disable_version_q049_ != - GetQuicReloadableFlag(quic_disable_version_q049) || - disable_version_q048_ != - GetQuicReloadableFlag(quic_disable_version_q048) || disable_version_q046_ != GetQuicReloadableFlag(quic_disable_version_q046) || disable_version_q043_ != @@ -86,8 +80,6 @@ GetQuicReloadableFlag(quic_disable_version_draft_25); disable_version_q050_ = GetQuicReloadableFlag(quic_disable_version_q050); disable_version_t050_ = GetQuicReloadableFlag(quic_disable_version_t050); - disable_version_q049_ = GetQuicReloadableFlag(quic_disable_version_q049); - disable_version_q048_ = GetQuicReloadableFlag(quic_disable_version_q048); disable_version_q046_ = GetQuicReloadableFlag(quic_disable_version_q046); disable_version_q043_ = GetQuicReloadableFlag(quic_disable_version_q043);
diff --git a/quic/core/quic_version_manager.h b/quic/core/quic_version_manager.h index e6bb8f6..d86260f 100644 --- a/quic/core/quic_version_manager.h +++ b/quic/core/quic_version_manager.h
@@ -62,10 +62,6 @@ bool disable_version_q050_; // quic_disable_version_t050 flag bool disable_version_t050_; - // quic_disable_version_q049 flag - bool disable_version_q049_; - // quic_disable_version_q048 flag - bool disable_version_q048_; // quic_disable_version_q046 flag bool disable_version_q046_; // quic_disable_version_q043 flag
diff --git a/quic/core/quic_version_manager_test.cc b/quic/core/quic_version_manager_test.cc index 4687b79..4106f60 100644 --- a/quic/core/quic_version_manager_test.cc +++ b/quic/core/quic_version_manager_test.cc
@@ -18,15 +18,13 @@ class QuicVersionManagerTest : public QuicTest {}; TEST_F(QuicVersionManagerTest, QuicVersionManager) { - static_assert(SupportedVersions().size() == 9u, + static_assert(SupportedVersions().size() == 7u, "Supported versions out of sync"); SetQuicReloadableFlag(quic_enable_version_draft_29, false); SetQuicReloadableFlag(quic_disable_version_draft_27, true); SetQuicReloadableFlag(quic_disable_version_draft_25, true); SetQuicReloadableFlag(quic_disable_version_t050, false); SetQuicReloadableFlag(quic_disable_version_q050, false); - SetQuicReloadableFlag(quic_disable_version_q049, false); - SetQuicReloadableFlag(quic_disable_version_q048, false); SetQuicReloadableFlag(quic_disable_version_q046, false); SetQuicReloadableFlag(quic_disable_version_q043, false); QuicVersionManager manager(AllSupportedVersions()); @@ -37,10 +35,6 @@ expected_parsed_versions.push_back( ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, QUIC_VERSION_50)); expected_parsed_versions.push_back( - ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, QUIC_VERSION_49)); - expected_parsed_versions.push_back( - ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, QUIC_VERSION_48)); - expected_parsed_versions.push_back( ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, QUIC_VERSION_46)); expected_parsed_versions.push_back( ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, QUIC_VERSION_43)); @@ -52,8 +46,7 @@ EXPECT_EQ(CurrentSupportedVersionsWithQuicCrypto(), manager.GetSupportedVersionsWithQuicCrypto()); EXPECT_THAT(manager.GetSupportedAlpns(), - ElementsAre("h3-T050", "h3-Q050", "h3-Q049", "h3-Q048", "h3-Q046", - "h3-Q043")); + ElementsAre("h3-T050", "h3-Q050", "h3-Q046", "h3-Q043")); SetQuicReloadableFlag(quic_enable_version_draft_29, true); expected_parsed_versions.insert(expected_parsed_versions.begin(), @@ -66,8 +59,7 @@ EXPECT_EQ(CurrentSupportedVersionsWithQuicCrypto(), manager.GetSupportedVersionsWithQuicCrypto()); EXPECT_THAT(manager.GetSupportedAlpns(), - ElementsAre("h3-29", "h3-T050", "h3-Q050", "h3-Q049", "h3-Q048", - "h3-Q046", "h3-Q043")); + ElementsAre("h3-29", "h3-T050", "h3-Q050", "h3-Q046", "h3-Q043")); SetQuicReloadableFlag(quic_disable_version_draft_27, false); expected_parsed_versions.insert( @@ -81,8 +73,8 @@ EXPECT_EQ(CurrentSupportedVersionsWithQuicCrypto(), manager.GetSupportedVersionsWithQuicCrypto()); EXPECT_THAT(manager.GetSupportedAlpns(), - ElementsAre("h3-29", "h3-27", "h3-T050", "h3-Q050", "h3-Q049", - "h3-Q048", "h3-Q046", "h3-Q043")); + ElementsAre("h3-29", "h3-27", "h3-T050", "h3-Q050", "h3-Q046", + "h3-Q043")); SetQuicReloadableFlag(quic_disable_version_draft_25, false); expected_parsed_versions.insert( @@ -95,7 +87,7 @@ manager.GetSupportedVersionsWithQuicCrypto()); EXPECT_THAT(manager.GetSupportedAlpns(), ElementsAre("h3-29", "h3-27", "h3-25", "h3-T050", "h3-Q050", - "h3-Q049", "h3-Q048", "h3-Q046", "h3-Q043")); + "h3-Q046", "h3-Q043")); } } // namespace
diff --git a/quic/core/quic_versions.cc b/quic/core/quic_versions.cc index 5090344..cc7e0c6 100644 --- a/quic/core/quic_versions.cc +++ b/quic/core/quic_versions.cc
@@ -40,7 +40,7 @@ } void SetVersionFlag(const ParsedQuicVersion& version, bool should_enable) { - static_assert(SupportedVersions().size() == 9u, + static_assert(SupportedVersions().size() == 7u, "Supported versions out of sync"); const bool enable = should_enable; const bool disable = !should_enable; @@ -54,10 +54,6 @@ SetQuicReloadableFlag(quic_disable_version_t050, disable); } else if (version == ParsedQuicVersion::Q050()) { SetQuicReloadableFlag(quic_disable_version_q050, disable); - } else if (version == ParsedQuicVersion::Q049()) { - SetQuicReloadableFlag(quic_disable_version_q049, disable); - } else if (version == ParsedQuicVersion::Q048()) { - SetQuicReloadableFlag(quic_disable_version_q048, disable); } else if (version == ParsedQuicVersion::Q046()) { SetQuicReloadableFlag(quic_disable_version_q046, disable); } else if (version == ParsedQuicVersion::Q043()) { @@ -79,29 +75,30 @@ bool ParsedQuicVersion::KnowsWhichDecrypterToUse() const { DCHECK(IsKnown()); - return transport_version > QUIC_VERSION_46 || - handshake_protocol == PROTOCOL_TLS1_3; + return transport_version > QUIC_VERSION_46; } bool ParsedQuicVersion::UsesInitialObfuscators() const { DCHECK(IsKnown()); - return transport_version > QUIC_VERSION_49 || - handshake_protocol == PROTOCOL_TLS1_3; + // Initial obfuscators were added in version 50. + return transport_version > QUIC_VERSION_46; } bool ParsedQuicVersion::AllowsLowFlowControlLimits() const { DCHECK(IsKnown()); - return transport_version >= QUIC_VERSION_IETF_DRAFT_25 && - handshake_protocol == PROTOCOL_TLS1_3; + // Low flow-control limits are used for all IETF versions. + return UsesHttp3(); } bool ParsedQuicVersion::HasHeaderProtection() const { DCHECK(IsKnown()); - return transport_version > QUIC_VERSION_49; + // Header protection was added in version 50. + return transport_version > QUIC_VERSION_46; } bool ParsedQuicVersion::SupportsRetry() const { DCHECK(IsKnown()); + // Retry was added in version 47. return transport_version > QUIC_VERSION_46; } @@ -122,7 +119,8 @@ bool ParsedQuicVersion::SupportsClientConnectionIds() const { DCHECK(IsKnown()); - return transport_version > QUIC_VERSION_48; + // Client connection IDs were added in version 49. + return transport_version > QUIC_VERSION_46; } bool ParsedQuicVersion::HasLengthPrefixedConnectionIds() const { @@ -132,8 +130,8 @@ bool ParsedQuicVersion::SupportsAntiAmplificationLimit() const { DCHECK(IsKnown()); - return transport_version >= QUIC_VERSION_IETF_DRAFT_25 && - handshake_protocol == PROTOCOL_TLS1_3; + // The anti-amplification limit is used for all IETF versions. + return UsesHttp3(); } bool ParsedQuicVersion::CanSendCoalescedPackets() const { @@ -184,11 +182,13 @@ bool ParsedQuicVersion::HasVarIntTransportParams() const { DCHECK(IsKnown()); - return transport_version >= QUIC_VERSION_IETF_DRAFT_27; + // Variable-length integer transport parameters were added in draft-27. + return transport_version > QUIC_VERSION_IETF_DRAFT_25; } bool ParsedQuicVersion::AuthenticatesHandshakeConnectionIds() const { DCHECK(IsKnown()); + // Authentication of handshake connection IDs was added in draft-28. return transport_version > QUIC_VERSION_IETF_DRAFT_27; } @@ -205,7 +205,8 @@ bool VersionHasLengthPrefixedConnectionIds( QuicTransportVersion transport_version) { DCHECK(transport_version != QUIC_VERSION_UNSUPPORTED); - return transport_version > QUIC_VERSION_48; + // Length-prefixed connection IDs were added in version 49. + return transport_version > QUIC_VERSION_46; } std::ostream& operator<<(std::ostream& os, const ParsedQuicVersion& version) { @@ -245,17 +246,13 @@ << parsed_version.handshake_protocol; return 0; } - static_assert(SupportedVersions().size() == 9u, + static_assert(SupportedVersions().size() == 7u, "Supported versions out of sync"); switch (parsed_version.transport_version) { case QUIC_VERSION_43: return MakeVersionLabel(proto, '0', '4', '3'); case QUIC_VERSION_46: return MakeVersionLabel(proto, '0', '4', '6'); - case QUIC_VERSION_48: - return MakeVersionLabel(proto, '0', '4', '8'); - case QUIC_VERSION_49: - return MakeVersionLabel(proto, '0', '4', '9'); case QUIC_VERSION_50: return MakeVersionLabel(proto, '0', '5', '0'); case QUIC_VERSION_IETF_DRAFT_25: @@ -457,14 +454,6 @@ filtered_versions.push_back(version); } } - } else if (version.transport_version == QUIC_VERSION_49) { - if (!GetQuicReloadableFlag(quic_disable_version_q049)) { - filtered_versions.push_back(version); - } - } else if (version.transport_version == QUIC_VERSION_48) { - if (!GetQuicReloadableFlag(quic_disable_version_q048)) { - filtered_versions.push_back(version); - } } else if (version.transport_version == QUIC_VERSION_46) { QUIC_BUG_IF(version.handshake_protocol != PROTOCOL_QUIC_CRYPTO); if (!GetQuicReloadableFlag(quic_disable_version_q046)) { @@ -563,13 +552,11 @@ return #x std::string QuicVersionToString(QuicTransportVersion transport_version) { - static_assert(SupportedTransportVersions().size() == 8u, + static_assert(SupportedTransportVersions().size() == 6u, "Supported versions out of sync"); switch (transport_version) { RETURN_STRING_LITERAL(QUIC_VERSION_43); RETURN_STRING_LITERAL(QUIC_VERSION_46); - RETURN_STRING_LITERAL(QUIC_VERSION_48); - RETURN_STRING_LITERAL(QUIC_VERSION_49); RETURN_STRING_LITERAL(QUIC_VERSION_50); RETURN_STRING_LITERAL(QUIC_VERSION_IETF_DRAFT_25); RETURN_STRING_LITERAL(QUIC_VERSION_IETF_DRAFT_27);
diff --git a/quic/core/quic_versions.h b/quic/core/quic_versions.h index 341d398..aaceba1 100644 --- a/quic/core/quic_versions.h +++ b/quic/core/quic_versions.h
@@ -113,9 +113,9 @@ QUIC_VERSION_46 = 46, // Use IETF draft-17 header format with demultiplexing // bit. // Version 47 added variable-length QUIC server connection IDs. - QUIC_VERSION_48 = 48, // Use CRYPTO frames for the handshake. - QUIC_VERSION_49 = 49, // Client connection IDs, long header lengths, IETF - // header format from draft-ietf-quic-invariants-06. + // Version 48 added CRYPTO frames for the handshake. + // Version 49 added client connection IDs, long header lengths, and the IETF + // header format from draft-ietf-quic-invariants-06 QUIC_VERSION_50 = 50, // Header protection and initial obfuscators. QUIC_VERSION_IETF_DRAFT_25 = 70, // draft-ietf-quic-transport-25. QUIC_VERSION_IETF_DRAFT_27 = 71, // draft-ietf-quic-transport-27. @@ -135,13 +135,11 @@ // This array contains QUIC transport versions which we currently support. // DEPRECATED. Use SupportedVersions() instead. -constexpr std::array<QuicTransportVersion, 8> SupportedTransportVersions() { +constexpr std::array<QuicTransportVersion, 6> SupportedTransportVersions() { return {QUIC_VERSION_IETF_DRAFT_29, QUIC_VERSION_IETF_DRAFT_27, QUIC_VERSION_IETF_DRAFT_25, QUIC_VERSION_50, - QUIC_VERSION_49, - QUIC_VERSION_48, QUIC_VERSION_46, QUIC_VERSION_43}; } @@ -166,7 +164,8 @@ // instead of stream 1. QUIC_EXPORT_PRIVATE constexpr bool QuicVersionUsesCryptoFrames( QuicTransportVersion transport_version) { - return transport_version >= QUIC_VERSION_48; + // CRYPTO frames were added in version 48. + return transport_version > QUIC_VERSION_46; } // Returns whether this combination of handshake protocol and transport @@ -202,11 +201,8 @@ transport_version != QUIC_VERSION_IETF_DRAFT_27 && transport_version != QUIC_VERSION_IETF_DRAFT_29; case PROTOCOL_TLS1_3: - // The TLS handshake is only deployable if CRYPTO frames are also used. - // We explicitly removed support for T048 and T049 to reduce test load. return transport_version != QUIC_VERSION_UNSUPPORTED && - QuicVersionUsesCryptoFrames(transport_version) && - transport_version > QUIC_VERSION_49; + QuicVersionUsesCryptoFrames(transport_version); } return false; } @@ -271,14 +267,6 @@ return ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, QUIC_VERSION_50); } - static constexpr ParsedQuicVersion Q049() { - return ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, QUIC_VERSION_49); - } - - static constexpr ParsedQuicVersion Q048() { - return ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, QUIC_VERSION_48); - } - static constexpr ParsedQuicVersion Q046() { return ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, QUIC_VERSION_46); } @@ -427,12 +415,11 @@ return {PROTOCOL_TLS1_3, PROTOCOL_QUIC_CRYPTO}; } -constexpr std::array<ParsedQuicVersion, 9> SupportedVersions() { +constexpr std::array<ParsedQuicVersion, 7> SupportedVersions() { return { ParsedQuicVersion::Draft29(), ParsedQuicVersion::Draft27(), ParsedQuicVersion::Draft25(), ParsedQuicVersion::T050(), - ParsedQuicVersion::Q050(), ParsedQuicVersion::Q049(), - ParsedQuicVersion::Q048(), ParsedQuicVersion::Q046(), + ParsedQuicVersion::Q050(), ParsedQuicVersion::Q046(), ParsedQuicVersion::Q043(), }; } @@ -602,7 +589,8 @@ // Returns true if |transport_version| supports MESSAGE frames. QUIC_EXPORT_PRIVATE constexpr bool VersionSupportsMessageFrames( QuicTransportVersion transport_version) { - return transport_version >= QUIC_VERSION_46; + // MESSAGE frames were added in version 45. + return transport_version > QUIC_VERSION_43; } // If true, HTTP/3 instead of gQUIC will be used at the HTTP layer. @@ -623,14 +611,15 @@ // length field as defined by IETF QUIC draft-13 and later. QUIC_EXPORT_PRIVATE constexpr bool QuicVersionHasLongHeaderLengths( QuicTransportVersion transport_version) { - return transport_version >= QUIC_VERSION_49; + // Long header lengths were added in version 49. + return transport_version > QUIC_VERSION_46; } // Returns whether |transport_version| makes use of IETF QUIC // frames or not. QUIC_EXPORT_PRIVATE constexpr bool VersionHasIetfQuicFrames( QuicTransportVersion transport_version) { - return transport_version >= QUIC_VERSION_IETF_DRAFT_25; + return VersionUsesHttp3(transport_version); } // Returns whether this version supports long header 8-bit encoded
diff --git a/quic/core/quic_versions_test.cc b/quic/core/quic_versions_test.cc index c7ebb82..8569007 100644 --- a/quic/core/quic_versions_test.cc +++ b/quic/core/quic_versions_test.cc
@@ -210,8 +210,6 @@ ParseQuicVersionLabel(MakeVersionLabel('Q', '0', '4', '3'))); EXPECT_EQ(ParsedQuicVersion::Q046(), ParseQuicVersionLabel(MakeVersionLabel('Q', '0', '4', '6'))); - EXPECT_EQ(ParsedQuicVersion::Q048(), - ParseQuicVersionLabel(MakeVersionLabel('Q', '0', '4', '8'))); EXPECT_EQ(ParsedQuicVersion::Q050(), ParseQuicVersionLabel(MakeVersionLabel('Q', '0', '5', '0'))); EXPECT_EQ(ParsedQuicVersion::T050(), @@ -224,7 +222,6 @@ ParseQuicVersionString("QUIC_VERSION_46")); EXPECT_EQ(ParsedQuicVersion::Q046(), ParseQuicVersionString("46")); EXPECT_EQ(ParsedQuicVersion::Q046(), ParseQuicVersionString("Q046")); - EXPECT_EQ(ParsedQuicVersion::Q048(), ParseQuicVersionString("Q048")); EXPECT_EQ(ParsedQuicVersion::Q050(), ParseQuicVersionString("Q050")); EXPECT_EQ(ParsedQuicVersion::Q050(), ParseQuicVersionString("50")); EXPECT_EQ(ParsedQuicVersion::Q050(), ParseQuicVersionString("h3-Q050")); @@ -325,8 +322,6 @@ CreateQuicVersionLabel(ParsedQuicVersion::Q043())); EXPECT_EQ(MakeVersionLabel('Q', '0', '4', '6'), CreateQuicVersionLabel(ParsedQuicVersion::Q046())); - EXPECT_EQ(MakeVersionLabel('Q', '0', '4', '8'), - CreateQuicVersionLabel(ParsedQuicVersion::Q048())); EXPECT_EQ(MakeVersionLabel('Q', '0', '5', '0'), CreateQuicVersionLabel(ParsedQuicVersion::Q050())); @@ -493,12 +488,10 @@ // yet a typo was made in doing the #defines and it was caught // only in some test far removed from here... Better safe than sorry. TEST_F(QuicVersionsTest, CheckTransportVersionNumbersForTypos) { - static_assert(SupportedTransportVersions().size() == 8u, + static_assert(SupportedTransportVersions().size() == 6u, "Supported versions out of sync"); EXPECT_EQ(QUIC_VERSION_43, 43); EXPECT_EQ(QUIC_VERSION_46, 46); - EXPECT_EQ(QUIC_VERSION_48, 48); - EXPECT_EQ(QUIC_VERSION_49, 49); EXPECT_EQ(QUIC_VERSION_50, 50); EXPECT_EQ(QUIC_VERSION_IETF_DRAFT_25, 70); EXPECT_EQ(QUIC_VERSION_IETF_DRAFT_27, 71); @@ -506,17 +499,13 @@ } TEST_F(QuicVersionsTest, AlpnForVersion) { - static_assert(SupportedVersions().size() == 9u, + static_assert(SupportedVersions().size() == 7u, "Supported versions out of sync"); - ParsedQuicVersion parsed_version_q048 = ParsedQuicVersion::Q048(); - ParsedQuicVersion parsed_version_q049 = ParsedQuicVersion::Q049(); ParsedQuicVersion parsed_version_q050 = ParsedQuicVersion::Q050(); ParsedQuicVersion parsed_version_t050 = ParsedQuicVersion::T050(); ParsedQuicVersion parsed_version_draft_25 = ParsedQuicVersion::Draft25(); ParsedQuicVersion parsed_version_draft_27 = ParsedQuicVersion::Draft27(); - EXPECT_EQ("h3-Q048", AlpnForVersion(parsed_version_q048)); - EXPECT_EQ("h3-Q049", AlpnForVersion(parsed_version_q049)); EXPECT_EQ("h3-Q050", AlpnForVersion(parsed_version_q050)); EXPECT_EQ("h3-T050", AlpnForVersion(parsed_version_t050)); EXPECT_EQ("h3-25", AlpnForVersion(parsed_version_draft_25));
diff --git a/quic/test_tools/fuzzing/quic_framer_process_data_packet_fuzzer.cc b/quic/test_tools/fuzzing/quic_framer_process_data_packet_fuzzer.cc index 9b5d64d..a35919e 100644 --- a/quic/test_tools/fuzzing/quic_framer_process_data_packet_fuzzer.cc +++ b/quic/test_tools/fuzzing/quic_framer_process_data_packet_fuzzer.cc
@@ -60,7 +60,6 @@ const QuicTransportVersion transport_versions[] = { quic::QUIC_VERSION_43, quic::QUIC_VERSION_46, - quic::QUIC_VERSION_48, }; return ParsedQuicVersion(