Deprecate --gfe2_reloadable_flag_quic_disable_version_q050
and remove QUIC_VERSION_50. This leaves Q046 as the only
gQUIC version supported by QUICHE!
PiperOrigin-RevId: 617727660
diff --git a/quiche/common/quiche_feature_flags_list.h b/quiche/common/quiche_feature_flags_list.h
index 3011ae0..a14a54d 100755
--- a/quiche/common/quiche_feature_flags_list.h
+++ b/quiche/common/quiche_feature_flags_list.h
@@ -29,7 +29,6 @@
QUICHE_FLAG(bool, quiche_reloadable_flag_quic_disable_server_blackhole_detection, false, "If true, disable blackhole detection on server side.")
QUICHE_FLAG(bool, quiche_reloadable_flag_quic_disable_version_draft_29, false, "If true, disable QUIC version h3-29.")
QUICHE_FLAG(bool, quiche_reloadable_flag_quic_disable_version_q046, false, "If true, disable QUIC version Q046.")
-QUICHE_FLAG(bool, quiche_reloadable_flag_quic_disable_version_q050, true, "If true, disable QUIC version Q050.")
QUICHE_FLAG(bool, quiche_reloadable_flag_quic_disable_version_rfcv1, false, "If true, disable QUIC version h3 (RFCv1).")
QUICHE_FLAG(bool, quiche_reloadable_flag_quic_discard_initial_packet_with_key_dropped, false, "If true, discard INITIAL packet if the key has been dropped.")
QUICHE_FLAG(bool, quiche_reloadable_flag_quic_enable_disable_resumption, true, "If true, disable resumption when receiving NRES connection option.")
diff --git a/quiche/quic/core/crypto/crypto_utils.cc b/quiche/quic/core/crypto/crypto_utils.cc
index 1e6b04b..f19c327 100644
--- a/quiche/quic/core/crypto/crypto_utils.cc
+++ b/quiche/quic/core/crypto/crypto_utils.cc
@@ -94,7 +94,7 @@
const std::string getLabelForVersion(const ParsedQuicVersion& version,
const absl::string_view& predicate) {
- static_assert(SupportedVersions().size() == 5u,
+ static_assert(SupportedVersions().size() == 4u,
"Supported versions out of sync with HKDF labels");
if (version == ParsedQuicVersion::RFCv2()) {
return absl::StrCat("quicv2 ", predicate);
@@ -160,10 +160,6 @@
// Salts used by deployed versions of QUIC. When introducing a new version,
// generate a new salt by running `openssl rand -hex 20`.
-// Salt to use for initial obfuscators in version Q050.
-const uint8_t kQ050Salt[] = {0x50, 0x45, 0x74, 0xef, 0xd0, 0x66, 0xfe,
- 0x2f, 0x9d, 0x94, 0x5c, 0xfc, 0xdb, 0xd3,
- 0xa7, 0xf0, 0xd3, 0xb5, 0x6b, 0x45};
// Salt to use for initial obfuscators in
// ParsedQuicVersion::ReservedForNegotiation().
const uint8_t kReservedForNegotiationSalt[] = {
@@ -172,7 +168,7 @@
const uint8_t* InitialSaltForVersion(const ParsedQuicVersion& version,
size_t* out_len) {
- static_assert(SupportedVersions().size() == 5u,
+ static_assert(SupportedVersions().size() == 4u,
"Supported versions out of sync with initial encryption salts");
if (version == ParsedQuicVersion::RFCv2()) {
*out_len = ABSL_ARRAYSIZE(kRFCv2InitialSalt);
@@ -183,9 +179,6 @@
} else if (version == ParsedQuicVersion::Draft29()) {
*out_len = ABSL_ARRAYSIZE(kDraft29InitialSalt);
return kDraft29InitialSalt;
- } else if (version == ParsedQuicVersion::Q050()) {
- *out_len = ABSL_ARRAYSIZE(kQ050Salt);
- return kQ050Salt;
} else if (version == ParsedQuicVersion::ReservedForNegotiation()) {
*out_len = ABSL_ARRAYSIZE(kReservedForNegotiationSalt);
return kReservedForNegotiationSalt;
@@ -230,7 +223,7 @@
bool RetryIntegrityKeysForVersion(const ParsedQuicVersion& version,
absl::string_view* key,
absl::string_view* nonce) {
- static_assert(SupportedVersions().size() == 5u,
+ static_assert(SupportedVersions().size() == 4u,
"Supported versions out of sync with retry integrity keys");
if (!version.UsesTls()) {
QUIC_BUG(quic_bug_10699_2)
diff --git a/quiche/quic/core/quic_crypto_client_stream_test.cc b/quiche/quic/core/quic_crypto_client_stream_test.cc
index 377f7a2..28ccad9 100644
--- a/quiche/quic/core/quic_crypto_client_stream_test.cc
+++ b/quiche/quic/core/quic_crypto_client_stream_test.cc
@@ -337,35 +337,6 @@
stream(), server_config_update, Perspective::IS_SERVER);
}
-TEST_F(QuicCryptoClientStreamTest, PreferredVersion) {
- // This mimics the case where client receives version negotiation packet, such
- // that, the preferred version is different from the packets' version.
- connection_ = new PacketSavingConnection(
- &client_helper_, &alarm_factory_, Perspective::IS_CLIENT,
- ParsedVersionOfIndex(supported_versions_, 1));
- connection_->AdvanceTime(QuicTime::Delta::FromSeconds(1));
-
- CreateSession();
- CompleteCryptoHandshake();
- // 2 CHLOs are sent.
- ASSERT_EQ(2u, session_->sent_crypto_handshake_messages().size());
- // Verify preferred version is the highest version that session supports, and
- // is different from connection's version.
- QuicVersionLabel client_version_label;
- EXPECT_THAT(session_->sent_crypto_handshake_messages()[0].GetVersionLabel(
- kVER, &client_version_label),
- IsQuicNoError());
- EXPECT_EQ(CreateQuicVersionLabel(supported_versions_[0]),
- client_version_label);
- EXPECT_THAT(session_->sent_crypto_handshake_messages()[1].GetVersionLabel(
- kVER, &client_version_label),
- IsQuicNoError());
- EXPECT_EQ(CreateQuicVersionLabel(supported_versions_[0]),
- client_version_label);
- EXPECT_NE(CreateQuicVersionLabel(connection_->version()),
- client_version_label);
-}
-
} // namespace
} // namespace test
} // namespace quic
diff --git a/quiche/quic/core/quic_dispatcher.cc b/quiche/quic/core/quic_dispatcher.cc
index e7859e1..fc71a6c 100644
--- a/quiche/quic/core/quic_dispatcher.cc
+++ b/quiche/quic/core/quic_dispatcher.cc
@@ -401,14 +401,13 @@
}
// The framer might have extracted the incorrect Connection ID length from a
// short header. |packet| could be gQUIC; if Q043, the connection ID has been
- // parsed correctly thanks to the fixed bit. If a Q046 or Q050 short header,
+ // parsed correctly thanks to the fixed bit. If a Q046 short header,
// the dispatcher might have assumed it was a long connection ID when (because
// it was gQUIC) it actually issued or kept an 8-byte ID. The other case is
// where NEW_CONNECTION_IDs are not using the generator, and the dispatcher
// is, due to flag misconfiguration.
if (!packet_info.version_flag &&
- (IsSupportedVersion(ParsedQuicVersion::Q046()) ||
- IsSupportedVersion(ParsedQuicVersion::Q050()))) {
+ IsSupportedVersion(ParsedQuicVersion::Q046())) {
ReceivedPacketInfo gquic_packet_info(self_address, peer_address, packet);
// Try again without asking |connection_id_generator_| for the length.
const QuicErrorCode gquic_error = QuicFramer::ParsePublicHeaderDispatcher(
diff --git a/quiche/quic/core/quic_dispatcher_test.cc b/quiche/quic/core/quic_dispatcher_test.cc
index 0e6b848..70eca81 100644
--- a/quiche/quic/core/quic_dispatcher_test.cc
+++ b/quiche/quic/core/quic_dispatcher_test.cc
@@ -1562,6 +1562,24 @@
}
TEST_P(QuicDispatcherTestOneVersion,
+ RejectDeprecatedVersionQ050WithVersionNegotiation) {
+ QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1);
+ CreateTimeWaitListManager();
+ uint8_t packet[kMinPacketSizeForVersionNegotiation] = {
+ 0xFF, 'Q', '0', '5', '0', /*connection ID length byte*/ 0x50};
+ QuicReceivedPacket received_packet(reinterpret_cast<char*>(packet),
+ kMinPacketSizeForVersionNegotiation,
+ QuicTime::Zero());
+ EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _, _)).Times(0);
+ EXPECT_CALL(
+ *time_wait_list_manager_,
+ SendVersionNegotiationPacket(_, _, /*ietf_quic=*/true,
+ /*use_length_prefix=*/true, _, _, _, _))
+ .Times(1);
+ dispatcher_->ProcessPacket(server_address_, client_address, received_packet);
+}
+
+TEST_P(QuicDispatcherTestOneVersion,
RejectDeprecatedVersionT051WithVersionNegotiation) {
QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1);
CreateTimeWaitListManager();
@@ -1579,7 +1597,7 @@
dispatcher_->ProcessPacket(server_address_, client_address, received_packet);
}
-static_assert(quic::SupportedVersions().size() == 5u,
+static_assert(quic::SupportedVersions().size() == 4u,
"Please add new RejectDeprecatedVersion tests above this assert "
"when deprecating versions");
@@ -1907,11 +1925,11 @@
EXPECT_EQ(QuicDispatcherPeer::SelectAlpn(dispatcher_.get(), {}), "");
EXPECT_EQ(QuicDispatcherPeer::SelectAlpn(dispatcher_.get(), {""}), "");
EXPECT_EQ(QuicDispatcherPeer::SelectAlpn(dispatcher_.get(), {"hq"}), "hq");
- // Q033 is no longer supported but Q050 is.
- QuicEnableVersion(ParsedQuicVersion::Q050());
+ // Q033 is no longer supported but Q046 is.
+ QuicEnableVersion(ParsedQuicVersion::Q046());
EXPECT_EQ(
- QuicDispatcherPeer::SelectAlpn(dispatcher_.get(), {"h3-Q033", "h3-Q050"}),
- "h3-Q050");
+ QuicDispatcherPeer::SelectAlpn(dispatcher_.get(), {"h3-Q033", "h3-Q046"}),
+ "h3-Q046");
}
// Verify the stopgap test: Packets with truncated connection IDs should be
diff --git a/quiche/quic/core/quic_flags_list.h b/quiche/quic/core/quic_flags_list.h
index 5b7ab92..fa1acaa 100644
--- a/quiche/quic/core/quic_flags_list.h
+++ b/quiche/quic/core/quic_flags_list.h
@@ -59,8 +59,6 @@
QUIC_FLAG(quic_reloadable_flag_quic_default_enable_5rto_blackhole_detection2, true)
// If true, disable QUIC version Q046.
QUIC_FLAG(quic_reloadable_flag_quic_disable_version_q046, true)
-// If true, disable QUIC version Q050.
-QUIC_FLAG(quic_reloadable_flag_quic_disable_version_q050, true)
// If true, disable QUIC version h3 (RFCv1).
QUIC_FLAG(quic_reloadable_flag_quic_disable_version_rfcv1, false)
// If true, disable QUIC version h3-29.
diff --git a/quiche/quic/core/quic_utils_test.cc b/quiche/quic/core/quic_utils_test.cc
index 239812f..7da2ea0 100644
--- a/quiche/quic/core/quic_utils_test.cc
+++ b/quiche/quic/core/quic_utils_test.cc
@@ -206,12 +206,8 @@
EXPECT_FALSE(VersionAllowsVariableLengthConnectionIds(QUIC_VERSION_46));
EXPECT_TRUE(QuicUtils::IsConnectionIdValidForVersion(
QuicUtils::CreateZeroConnectionId(QUIC_VERSION_46), QUIC_VERSION_46));
- EXPECT_TRUE(QuicUtils::IsConnectionIdValidForVersion(
- QuicUtils::CreateZeroConnectionId(QUIC_VERSION_50), QUIC_VERSION_50));
EXPECT_NE(QuicUtils::CreateZeroConnectionId(QUIC_VERSION_46),
EmptyQuicConnectionId());
- EXPECT_EQ(QuicUtils::CreateZeroConnectionId(QUIC_VERSION_50),
- EmptyQuicConnectionId());
EXPECT_FALSE(QuicUtils::IsConnectionIdValidForVersion(EmptyQuicConnectionId(),
QUIC_VERSION_46));
}
diff --git a/quiche/quic/core/quic_version_manager.cc b/quiche/quic/core/quic_version_manager.cc
index 77755b4..9283c87 100644
--- a/quiche/quic/core/quic_version_manager.cc
+++ b/quiche/quic/core/quic_version_manager.cc
@@ -36,7 +36,7 @@
}
void QuicVersionManager::MaybeRefilterSupportedVersions() {
- static_assert(SupportedVersions().size() == 5u,
+ static_assert(SupportedVersions().size() == 4u,
"Supported versions out of sync");
if (enable_version_2_draft_08_ !=
GetQuicReloadableFlag(quic_enable_version_rfcv2) ||
@@ -44,8 +44,6 @@
GetQuicReloadableFlag(quic_disable_version_rfcv1) ||
disable_version_draft_29_ !=
GetQuicReloadableFlag(quic_disable_version_draft_29) ||
- disable_version_q050_ !=
- GetQuicReloadableFlag(quic_disable_version_q050) ||
disable_version_q046_ !=
GetQuicReloadableFlag(quic_disable_version_q046)) {
enable_version_2_draft_08_ =
@@ -53,7 +51,6 @@
disable_version_rfcv1_ = GetQuicReloadableFlag(quic_disable_version_rfcv1);
disable_version_draft_29_ =
GetQuicReloadableFlag(quic_disable_version_draft_29);
- disable_version_q050_ = GetQuicReloadableFlag(quic_disable_version_q050);
disable_version_q046_ = GetQuicReloadableFlag(quic_disable_version_q046);
RefilterSupportedVersions();
diff --git a/quiche/quic/core/quic_version_manager.h b/quiche/quic/core/quic_version_manager.h
index c6c983b..24282ec 100644
--- a/quiche/quic/core/quic_version_manager.h
+++ b/quiche/quic/core/quic_version_manager.h
@@ -61,8 +61,6 @@
bool disable_version_rfcv1_ = true;
// quic_disable_version_draft_29 flag
bool disable_version_draft_29_ = true;
- // quic_disable_version_q050 flag
- bool disable_version_q050_ = true;
// quic_disable_version_q046 flag
bool disable_version_q046_ = true;
diff --git a/quiche/quic/core/quic_version_manager_test.cc b/quiche/quic/core/quic_version_manager_test.cc
index 5ff2781..cd48e1b 100644
--- a/quiche/quic/core/quic_version_manager_test.cc
+++ b/quiche/quic/core/quic_version_manager_test.cc
@@ -18,7 +18,7 @@
class QuicVersionManagerTest : public QuicTest {};
TEST_F(QuicVersionManagerTest, QuicVersionManager) {
- static_assert(SupportedVersions().size() == 5u,
+ static_assert(SupportedVersions().size() == 4u,
"Supported versions out of sync");
for (const ParsedQuicVersion& version : AllSupportedVersions()) {
QuicEnableVersion(version);
@@ -29,7 +29,6 @@
QuicVersionManager manager(AllSupportedVersions());
ParsedQuicVersionVector expected_parsed_versions;
- expected_parsed_versions.push_back(ParsedQuicVersion::Q050());
expected_parsed_versions.push_back(ParsedQuicVersion::Q046());
EXPECT_EQ(expected_parsed_versions, manager.GetSupportedVersions());
@@ -37,7 +36,7 @@
EXPECT_EQ(FilterSupportedVersions(AllSupportedVersions()),
manager.GetSupportedVersions());
EXPECT_TRUE(manager.GetSupportedVersionsWithOnlyHttp3().empty());
- EXPECT_THAT(manager.GetSupportedAlpns(), ElementsAre("h3-Q050", "h3-Q046"));
+ EXPECT_THAT(manager.GetSupportedAlpns(), ElementsAre("h3-Q046"));
QuicEnableVersion(ParsedQuicVersion::Draft29());
expected_parsed_versions.insert(expected_parsed_versions.begin(),
@@ -48,8 +47,7 @@
EXPECT_EQ(1u, manager.GetSupportedVersionsWithOnlyHttp3().size());
EXPECT_EQ(CurrentSupportedHttp3Versions(),
manager.GetSupportedVersionsWithOnlyHttp3());
- EXPECT_THAT(manager.GetSupportedAlpns(),
- ElementsAre("h3-29", "h3-Q050", "h3-Q046"));
+ EXPECT_THAT(manager.GetSupportedAlpns(), ElementsAre("h3-29", "h3-Q046"));
QuicEnableVersion(ParsedQuicVersion::RFCv1());
expected_parsed_versions.insert(expected_parsed_versions.begin(),
@@ -61,7 +59,7 @@
EXPECT_EQ(CurrentSupportedHttp3Versions(),
manager.GetSupportedVersionsWithOnlyHttp3());
EXPECT_THAT(manager.GetSupportedAlpns(),
- ElementsAre("h3", "h3-29", "h3-Q050", "h3-Q046"));
+ ElementsAre("h3", "h3-29", "h3-Q046"));
QuicEnableVersion(ParsedQuicVersion::RFCv2());
expected_parsed_versions.insert(expected_parsed_versions.begin(),
@@ -73,7 +71,7 @@
EXPECT_EQ(CurrentSupportedHttp3Versions(),
manager.GetSupportedVersionsWithOnlyHttp3());
EXPECT_THAT(manager.GetSupportedAlpns(),
- ElementsAre("h3", "h3-29", "h3-Q050", "h3-Q046"));
+ ElementsAre("h3", "h3-29", "h3-Q046"));
}
} // namespace
diff --git a/quiche/quic/core/quic_versions.cc b/quiche/quic/core/quic_versions.cc
index bb5c588..23a4dcb 100644
--- a/quiche/quic/core/quic_versions.cc
+++ b/quiche/quic/core/quic_versions.cc
@@ -36,7 +36,7 @@
}
void SetVersionFlag(const ParsedQuicVersion& version, bool should_enable) {
- static_assert(SupportedVersions().size() == 5u,
+ static_assert(SupportedVersions().size() == 4u,
"Supported versions out of sync");
const bool enable = should_enable;
const bool disable = !should_enable;
@@ -46,8 +46,6 @@
SetQuicReloadableFlag(quic_disable_version_rfcv1, disable);
} else if (version == ParsedQuicVersion::Draft29()) {
SetQuicReloadableFlag(quic_disable_version_draft_29, disable);
- } else if (version == ParsedQuicVersion::Q050()) {
- SetQuicReloadableFlag(quic_disable_version_q050, disable);
} else if (version == ParsedQuicVersion::Q046()) {
SetQuicReloadableFlag(quic_disable_version_q046, disable);
} else {
@@ -211,7 +209,7 @@
}
QuicVersionLabel CreateQuicVersionLabel(ParsedQuicVersion parsed_version) {
- static_assert(SupportedVersions().size() == 5u,
+ static_assert(SupportedVersions().size() == 4u,
"Supported versions out of sync");
if (parsed_version == ParsedQuicVersion::RFCv2()) {
return MakeVersionLabel(0x6b, 0x33, 0x43, 0xcf);
@@ -219,8 +217,6 @@
return MakeVersionLabel(0x00, 0x00, 0x00, 0x01);
} else if (parsed_version == ParsedQuicVersion::Draft29()) {
return MakeVersionLabel(0xff, 0x00, 0x00, 29);
- } else if (parsed_version == ParsedQuicVersion::Q050()) {
- return MakeVersionLabel('Q', '0', '5', '0');
} else if (parsed_version == ParsedQuicVersion::Q046()) {
return MakeVersionLabel('Q', '0', '4', '6');
} else if (parsed_version == ParsedQuicVersion::ReservedForNegotiation()) {
@@ -293,7 +289,6 @@
ParsedQuicVersionVector ObsoleteSupportedVersions() {
return ParsedQuicVersionVector{quic::ParsedQuicVersion::Q046(),
- quic::ParsedQuicVersion::Q050(),
quic::ParsedQuicVersion::Draft29()};
}
@@ -440,7 +435,7 @@
ParsedQuicVersionVector FilterSupportedVersions(
ParsedQuicVersionVector versions) {
- static_assert(SupportedVersions().size() == 5u,
+ static_assert(SupportedVersions().size() == 4u,
"Supported versions out of sync");
ParsedQuicVersionVector filtered_versions;
filtered_versions.reserve(versions.size());
@@ -457,10 +452,6 @@
if (!GetQuicReloadableFlag(quic_disable_version_draft_29)) {
filtered_versions.push_back(version);
}
- } else if (version == ParsedQuicVersion::Q050()) {
- if (!GetQuicReloadableFlag(quic_disable_version_q050)) {
- filtered_versions.push_back(version);
- }
} else if (version == ParsedQuicVersion::Q046()) {
if (!GetQuicReloadableFlag(quic_disable_version_q046)) {
filtered_versions.push_back(version);
@@ -527,7 +518,6 @@
std::string QuicVersionToString(QuicTransportVersion transport_version) {
switch (transport_version) {
RETURN_STRING_LITERAL(QUIC_VERSION_46);
- RETURN_STRING_LITERAL(QUIC_VERSION_50);
RETURN_STRING_LITERAL(QUIC_VERSION_IETF_DRAFT_29);
RETURN_STRING_LITERAL(QUIC_VERSION_IETF_RFC_V1);
RETURN_STRING_LITERAL(QUIC_VERSION_IETF_RFC_V2);
@@ -549,7 +539,7 @@
}
std::string ParsedQuicVersionToString(ParsedQuicVersion version) {
- static_assert(SupportedVersions().size() == 5u,
+ static_assert(SupportedVersions().size() == 4u,
"Supported versions out of sync");
if (version == UnsupportedQuicVersion()) {
return "0";
diff --git a/quiche/quic/core/quic_versions.h b/quiche/quic/core/quic_versions.h
index 3d7d151..682e79a 100644
--- a/quiche/quic/core/quic_versions.h
+++ b/quiche/quic/core/quic_versions.h
@@ -12,7 +12,7 @@
// We currently support two kinds of QUIC versions, GoogleQUIC and IETF QUIC.
//
// All GoogleQUIC versions use a wire encoding that matches the following regex
-// when converted to ASCII: "[QT]0\d\d" (e.g. Q050). Q or T distinguishes the
+// when converted to ASCII: "[QT]0\d\d" (e.g. Q046). Q or T distinguishes the
// type of handshake used (Q for the QUIC_CRYPTO handshake, T for the QUIC+TLS
// handshake), and the two digits at the end contain the numeric value of
// the transport version used.
@@ -117,7 +117,7 @@
// 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.
+ // Number 50 added header protection and initial obfuscators.
// Number 51 was T051 which used draft-29 features but with GoogleQUIC frames.
// Number 70 used to represent draft-ietf-quic-transport-25.
// Number 71 used to represent draft-ietf-quic-transport-27.
@@ -176,7 +176,6 @@
QUIC_VERSION_IETF_RFC_V2,
QUIC_VERSION_IETF_RFC_V1,
QUIC_VERSION_IETF_DRAFT_29,
- QUIC_VERSION_50,
QUIC_VERSION_46,
QUIC_VERSION_RESERVED_FOR_NEGOTIATION,
QUIC_VERSION_UNSUPPORTED,
@@ -201,7 +200,6 @@
transport_version != QUIC_VERSION_IETF_RFC_V2;
case PROTOCOL_TLS1_3:
return transport_version != QUIC_VERSION_UNSUPPORTED &&
- transport_version != QUIC_VERSION_50 &&
QuicVersionUsesCryptoFrames(transport_version);
}
return false;
@@ -260,10 +258,6 @@
return ParsedQuicVersion(PROTOCOL_TLS1_3, QUIC_VERSION_IETF_DRAFT_29);
}
- static constexpr ParsedQuicVersion Q050() {
- return ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, QUIC_VERSION_50);
- }
-
static constexpr ParsedQuicVersion Q046() {
return ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, QUIC_VERSION_46);
}
@@ -398,10 +392,11 @@
return {PROTOCOL_TLS1_3, PROTOCOL_QUIC_CRYPTO};
}
-constexpr std::array<ParsedQuicVersion, 5> SupportedVersions() {
+constexpr std::array<ParsedQuicVersion, 4> SupportedVersions() {
return {
- ParsedQuicVersion::RFCv2(), ParsedQuicVersion::RFCv1(),
- ParsedQuicVersion::Draft29(), ParsedQuicVersion::Q050(),
+ ParsedQuicVersion::RFCv2(),
+ ParsedQuicVersion::RFCv1(),
+ ParsedQuicVersion::Draft29(),
ParsedQuicVersion::Q046(),
};
}
@@ -475,14 +470,14 @@
ParseQuicVersionLabelVector(const QuicVersionLabelVector& version_labels);
// Parses a QUIC version string such as "Q043" or "T051". Also supports parsing
-// ALPN such as "h3-29" or "h3-Q050". For PROTOCOL_QUIC_CRYPTO versions, also
+// ALPN such as "h3-29" or "h3-Q046". For PROTOCOL_QUIC_CRYPTO versions, also
// supports parsing numbers such as "46".
QUICHE_EXPORT ParsedQuicVersion
ParseQuicVersionString(absl::string_view version_string);
// Parses a comma-separated list of QUIC version strings. Supports parsing by
// label, ALPN and numbers for PROTOCOL_QUIC_CRYPTO. Skips unknown versions.
-// For example: "h3-29,Q050,46".
+// For example: "h3-29,Q046,46".
QUICHE_EXPORT ParsedQuicVersionVector
ParseQuicVersionVectorString(absl::string_view versions_string);
diff --git a/quiche/quic/core/quic_versions_test.cc b/quiche/quic/core/quic_versions_test.cc
index 247b724..5d2bfaa 100644
--- a/quiche/quic/core/quic_versions_test.cc
+++ b/quiche/quic/core/quic_versions_test.cc
@@ -101,12 +101,10 @@
}
TEST(QuicVersionsTest, ParseQuicVersionLabel) {
- static_assert(SupportedVersions().size() == 5u,
+ static_assert(SupportedVersions().size() == 4u,
"Supported versions out of sync");
EXPECT_EQ(ParsedQuicVersion::Q046(),
ParseQuicVersionLabel(MakeVersionLabel('Q', '0', '4', '6')));
- EXPECT_EQ(ParsedQuicVersion::Q050(),
- ParseQuicVersionLabel(MakeVersionLabel('Q', '0', '5', '0')));
EXPECT_EQ(ParsedQuicVersion::Draft29(),
ParseQuicVersionLabel(MakeVersionLabel(0xff, 0x00, 0x00, 0x1d)));
EXPECT_EQ(ParsedQuicVersion::RFCv1(),
@@ -128,15 +126,12 @@
}
TEST(QuicVersionsTest, ParseQuicVersionString) {
- static_assert(SupportedVersions().size() == 5u,
+ static_assert(SupportedVersions().size() == 4u,
"Supported versions out of sync");
EXPECT_EQ(ParsedQuicVersion::Q046(),
ParseQuicVersionString("QUIC_VERSION_46"));
EXPECT_EQ(ParsedQuicVersion::Q046(), ParseQuicVersionString("46"));
EXPECT_EQ(ParsedQuicVersion::Q046(), ParseQuicVersionString("Q046"));
- EXPECT_EQ(ParsedQuicVersion::Q050(), ParseQuicVersionString("Q050"));
- EXPECT_EQ(ParsedQuicVersion::Q050(), ParseQuicVersionString("50"));
- EXPECT_EQ(ParsedQuicVersion::Q050(), ParseQuicVersionString("h3-Q050"));
EXPECT_EQ(UnsupportedQuicVersion(), ParseQuicVersionString(""));
EXPECT_EQ(UnsupportedQuicVersion(), ParseQuicVersionString("Q 46"));
@@ -166,48 +161,45 @@
TEST(QuicVersionsTest, ParseQuicVersionVectorString) {
ParsedQuicVersion version_q046 = ParsedQuicVersion::Q046();
- ParsedQuicVersion version_q050 = ParsedQuicVersion::Q050();
ParsedQuicVersion version_draft_29 = ParsedQuicVersion::Draft29();
EXPECT_THAT(ParseQuicVersionVectorString(""), IsEmpty());
- EXPECT_THAT(ParseQuicVersionVectorString("QUIC_VERSION_50"),
- ElementsAre(version_q050));
- EXPECT_THAT(ParseQuicVersionVectorString("h3-Q050"),
- ElementsAre(version_q050));
- EXPECT_THAT(ParseQuicVersionVectorString("h3-Q050, h3-29"),
- ElementsAre(version_q050, version_draft_29));
- EXPECT_THAT(ParseQuicVersionVectorString("h3-29,h3-Q050,h3-29"),
- ElementsAre(version_draft_29, version_q050));
- EXPECT_THAT(ParseQuicVersionVectorString("h3-29,h3-Q050, h3-29"),
- ElementsAre(version_draft_29, version_q050));
- EXPECT_THAT(ParseQuicVersionVectorString("h3-29, h3-Q050"),
- ElementsAre(version_draft_29, version_q050));
- EXPECT_THAT(ParseQuicVersionVectorString("QUIC_VERSION_50,h3-29"),
- ElementsAre(version_q050, version_draft_29));
- EXPECT_THAT(ParseQuicVersionVectorString("h3-29,QUIC_VERSION_50"),
- ElementsAre(version_draft_29, version_q050));
- EXPECT_THAT(ParseQuicVersionVectorString("QUIC_VERSION_50, h3-29"),
- ElementsAre(version_q050, version_draft_29));
- EXPECT_THAT(ParseQuicVersionVectorString("h3-29, QUIC_VERSION_50"),
- ElementsAre(version_draft_29, version_q050));
- EXPECT_THAT(ParseQuicVersionVectorString("QUIC_VERSION_50,QUIC_VERSION_46"),
- ElementsAre(version_q050, version_q046));
- EXPECT_THAT(ParseQuicVersionVectorString("QUIC_VERSION_46,QUIC_VERSION_50"),
- ElementsAre(version_q046, version_q050));
+ EXPECT_THAT(ParseQuicVersionVectorString("QUIC_VERSION_46"),
+ ElementsAre(version_q046));
+ EXPECT_THAT(ParseQuicVersionVectorString("h3-Q046"),
+ ElementsAre(version_q046));
+ EXPECT_THAT(ParseQuicVersionVectorString("h3-Q046, h3-29"),
+ ElementsAre(version_q046, version_draft_29));
+ EXPECT_THAT(ParseQuicVersionVectorString("h3-29,h3-Q046,h3-29"),
+ ElementsAre(version_draft_29, version_q046));
+ EXPECT_THAT(ParseQuicVersionVectorString("h3-29, h3-Q046"),
+ ElementsAre(version_draft_29, version_q046));
+ EXPECT_THAT(ParseQuicVersionVectorString("QUIC_VERSION_46,h3-29"),
+ ElementsAre(version_q046, version_draft_29));
+ EXPECT_THAT(ParseQuicVersionVectorString("h3-29,QUIC_VERSION_46"),
+ ElementsAre(version_draft_29, version_q046));
+ EXPECT_THAT(ParseQuicVersionVectorString("QUIC_VERSION_46, h3-29"),
+ ElementsAre(version_q046, version_draft_29));
+ EXPECT_THAT(ParseQuicVersionVectorString("h3-29, QUIC_VERSION_46"),
+ ElementsAre(version_draft_29, version_q046));
+ EXPECT_THAT(ParseQuicVersionVectorString("h3-29,QUIC_VERSION_46"),
+ ElementsAre(version_draft_29, version_q046));
+ EXPECT_THAT(ParseQuicVersionVectorString("QUIC_VERSION_46,h3-29"),
+ ElementsAre(version_q046, version_draft_29));
// Regression test for https://crbug.com/1044952.
- EXPECT_THAT(ParseQuicVersionVectorString("QUIC_VERSION_50, QUIC_VERSION_50"),
- ElementsAre(version_q050));
- EXPECT_THAT(ParseQuicVersionVectorString("h3-Q050, h3-Q050"),
- ElementsAre(version_q050));
- EXPECT_THAT(ParseQuicVersionVectorString("h3-Q050, QUIC_VERSION_50"),
- ElementsAre(version_q050));
+ EXPECT_THAT(ParseQuicVersionVectorString("QUIC_VERSION_46, QUIC_VERSION_46"),
+ ElementsAre(version_q046));
+ EXPECT_THAT(ParseQuicVersionVectorString("h3-Q046, h3-Q046"),
+ ElementsAre(version_q046));
+ EXPECT_THAT(ParseQuicVersionVectorString("h3-Q046, QUIC_VERSION_46"),
+ ElementsAre(version_q046));
EXPECT_THAT(ParseQuicVersionVectorString(
- "QUIC_VERSION_50, h3-Q050, QUIC_VERSION_50, h3-Q050"),
- ElementsAre(version_q050));
- EXPECT_THAT(ParseQuicVersionVectorString("QUIC_VERSION_50, h3-29, h3-Q050"),
- ElementsAre(version_q050, version_draft_29));
+ "QUIC_VERSION_46, h3-Q046, QUIC_VERSION_46, h3-Q046"),
+ ElementsAre(version_q046));
+ EXPECT_THAT(ParseQuicVersionVectorString("QUIC_VERSION_46, h3-29, h3-Q046"),
+ ElementsAre(version_q046, version_draft_29));
EXPECT_THAT(ParseQuicVersionVectorString("99"), IsEmpty());
EXPECT_THAT(ParseQuicVersionVectorString("70"), IsEmpty());
@@ -220,10 +212,9 @@
// CreateQuicVersionLabel() uses MakeVersionLabel() internally,
// in case it has a bug.
TEST(QuicVersionsTest, CreateQuicVersionLabel) {
- static_assert(SupportedVersions().size() == 5u,
+ static_assert(SupportedVersions().size() == 4u,
"Supported versions out of sync");
EXPECT_EQ(0x51303436u, CreateQuicVersionLabel(ParsedQuicVersion::Q046()));
- EXPECT_EQ(0x51303530u, CreateQuicVersionLabel(ParsedQuicVersion::Q050()));
EXPECT_EQ(0xff00001du, CreateQuicVersionLabel(ParsedQuicVersion::Draft29()));
EXPECT_EQ(0x00000001u, CreateQuicVersionLabel(ParsedQuicVersion::RFCv1()));
EXPECT_EQ(0x6b3343cfu, CreateQuicVersionLabel(ParsedQuicVersion::RFCv2()));
@@ -241,12 +232,10 @@
}
TEST(QuicVersionsTest, QuicVersionLabelToString) {
- static_assert(SupportedVersions().size() == 5u,
+ static_assert(SupportedVersions().size() == 4u,
"Supported versions out of sync");
EXPECT_EQ("Q046", QuicVersionLabelToString(
CreateQuicVersionLabel(ParsedQuicVersion::Q046())));
- EXPECT_EQ("Q050", QuicVersionLabelToString(
- CreateQuicVersionLabel(ParsedQuicVersion::Q050())));
EXPECT_EQ("ff00001d", QuicVersionLabelToString(CreateQuicVersionLabel(
ParsedQuicVersion::Draft29())));
EXPECT_EQ("00000001", QuicVersionLabelToString(CreateQuicVersionLabel(
@@ -277,11 +266,10 @@
}
TEST(QuicVersionsTest, ParseQuicVersionLabelString) {
- static_assert(SupportedVersions().size() == 5u,
+ static_assert(SupportedVersions().size() == 4u,
"Supported versions out of sync");
// Explicitly test known QUIC version label strings.
EXPECT_EQ(ParsedQuicVersion::Q046(), ParseQuicVersionLabelString("Q046"));
- EXPECT_EQ(ParsedQuicVersion::Q050(), ParseQuicVersionLabelString("Q050"));
EXPECT_EQ(ParsedQuicVersion::Draft29(),
ParseQuicVersionLabelString("ff00001d"));
EXPECT_EQ(ParsedQuicVersion::RFCv1(),
@@ -340,7 +328,6 @@
TEST(QuicVersionsTest, ParsedQuicVersionToString) {
EXPECT_EQ("0", ParsedQuicVersionToString(ParsedQuicVersion::Unsupported()));
EXPECT_EQ("Q046", ParsedQuicVersionToString(ParsedQuicVersion::Q046()));
- EXPECT_EQ("Q050", ParsedQuicVersionToString(ParsedQuicVersion::Q050()));
EXPECT_EQ("draft29", ParsedQuicVersionToString(ParsedQuicVersion::Draft29()));
EXPECT_EQ("RFCv1", ParsedQuicVersionToString(ParsedQuicVersion::RFCv1()));
EXPECT_EQ("RFCv2", ParsedQuicVersionToString(ParsedQuicVersion::RFCv2()));
@@ -410,20 +397,18 @@
// 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(QuicVersionsTest, CheckTransportVersionNumbersForTypos) {
- static_assert(SupportedVersions().size() == 5u,
+ static_assert(SupportedVersions().size() == 4u,
"Supported versions out of sync");
EXPECT_EQ(QUIC_VERSION_46, 46);
- EXPECT_EQ(QUIC_VERSION_50, 50);
EXPECT_EQ(QUIC_VERSION_IETF_DRAFT_29, 73);
EXPECT_EQ(QUIC_VERSION_IETF_RFC_V1, 80);
EXPECT_EQ(QUIC_VERSION_IETF_RFC_V2, 82);
}
TEST(QuicVersionsTest, AlpnForVersion) {
- static_assert(SupportedVersions().size() == 5u,
+ static_assert(SupportedVersions().size() == 4u,
"Supported versions out of sync");
EXPECT_EQ("h3-Q046", AlpnForVersion(ParsedQuicVersion::Q046()));
- EXPECT_EQ("h3-Q050", AlpnForVersion(ParsedQuicVersion::Q050()));
EXPECT_EQ("h3-29", AlpnForVersion(ParsedQuicVersion::Draft29()));
EXPECT_EQ("h3", AlpnForVersion(ParsedQuicVersion::RFCv1()));
EXPECT_EQ("h3", AlpnForVersion(ParsedQuicVersion::RFCv2()));
@@ -508,8 +493,7 @@
TEST(QuicVersionsTest, ObsoleteSupportedVersions) {
ParsedQuicVersionVector obsolete_versions = ObsoleteSupportedVersions();
EXPECT_EQ(quic::ParsedQuicVersion::Q046(), obsolete_versions[0]);
- EXPECT_EQ(quic::ParsedQuicVersion::Q050(), obsolete_versions[1]);
- EXPECT_EQ(quic::ParsedQuicVersion::Draft29(), obsolete_versions[2]);
+ EXPECT_EQ(quic::ParsedQuicVersion::Draft29(), obsolete_versions[1]);
}
TEST(QuicVersionsTest, IsObsoleteSupportedVersion) {
diff --git a/quiche/quic/load_balancer/load_balancer_encoder_test.cc b/quiche/quic/load_balancer/load_balancer_encoder_test.cc
index f776eac..14112c9 100644
--- a/quiche/quic/load_balancer/load_balancer_encoder_test.cc
+++ b/quiche/quic/load_balancer/load_balancer_encoder_test.cc
@@ -372,7 +372,7 @@
auto encoder = LoadBalancerEncoder::Create(random_, nullptr, false);
ASSERT_TRUE(encoder.has_value());
EXPECT_EQ(encoder->MaybeReplaceConnectionId(TestConnectionId(1),
- ParsedQuicVersion::Q050()),
+ ParsedQuicVersion::Q046()),
std::nullopt);
}