Remove QUIC draft-28 This flag never got deployed, and we're getting rid of draft-28 in favor of draft-29, so we're deprecating it now. Deprecate gfe2_reloadable_flag_quic_enable_version_draft_28 Startblock: after 2020-06-23 in US/Pacific PiperOrigin-RevId: 317813701 Change-Id: Id651cf7fc28fa7f5e830bb2d5c75dc2d4ef0ac88
diff --git a/quic/core/crypto/crypto_utils.cc b/quic/core/crypto/crypto_utils.cc index 3cdfeae..3127ede 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() == 10u, + static_assert(SupportedVersions().size() == 9u, "Supported versions out of sync with initial encryption salts"); switch (version.handshake_protocol) { case PROTOCOL_QUIC_CRYPTO: @@ -172,10 +172,6 @@ // draft-27 uses the same salt as draft-25. *out_len = QUICHE_ARRAYSIZE(kDraft25InitialSalt); return kDraft25InitialSalt; - case QUIC_VERSION_IETF_DRAFT_28: - // draft-28 uses the same salt as draft-25. - *out_len = QUICHE_ARRAYSIZE(kDraft25InitialSalt); - return kDraft25InitialSalt; case QUIC_VERSION_IETF_DRAFT_29: *out_len = QUICHE_ARRAYSIZE(kDraft29InitialSalt); return kDraft29InitialSalt; @@ -240,9 +236,7 @@ if (version == ParsedQuicVersion(PROTOCOL_TLS1_3, QUIC_VERSION_IETF_DRAFT_25) || version == - ParsedQuicVersion(PROTOCOL_TLS1_3, QUIC_VERSION_IETF_DRAFT_27) || - version == - ParsedQuicVersion(PROTOCOL_TLS1_3, QUIC_VERSION_IETF_DRAFT_28)) { + ParsedQuicVersion(PROTOCOL_TLS1_3, QUIC_VERSION_IETF_DRAFT_27)) { *key = quiche::QuicheStringPiece( reinterpret_cast<const char*>(kDraft25RetryIntegrityKey), QUICHE_ARRAYSIZE(kDraft25RetryIntegrityKey));
diff --git a/quic/core/quic_connection_test.cc b/quic/core/quic_connection_test.cc index d0f38a5..f416ae6 100644 --- a/quic/core/quic_connection_test.cc +++ b/quic/core/quic_connection_test.cc
@@ -10496,10 +10496,6 @@ 0xff, 0xff, 0x00, 0x00, 0x1b, 0x00, 0x08, 0xf0, 0x67, 0xa5, 0x50, 0x2a, 0x42, 0x62, 0xb5, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0xa5, 0x23, 0xcb, 0x5b, 0xa5, 0x24, 0x69, 0x5f, 0x65, 0x69, 0xf2, 0x93, 0xa1, 0x35, 0x9d, 0x8e}; - char retry_packet28[] = { - 0xff, 0xff, 0x00, 0x00, 0x1c, 0x00, 0x08, 0xf0, 0x67, 0xa5, 0x50, 0x2a, - 0x42, 0x62, 0xb5, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0xf7, 0x1a, 0x5f, 0x12, - 0xaf, 0xe3, 0xec, 0xf8, 0x00, 0x1a, 0x92, 0x0e, 0x6f, 0xdf, 0x1d, 0x63}; char retry_packet29[] = { 0xff, 0xff, 0x00, 0x00, 0x1d, 0x00, 0x08, 0xf0, 0x67, 0xa5, 0x50, 0x2a, 0x42, 0x62, 0xb5, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0xd1, 0x69, 0x26, 0xd8, @@ -10510,9 +10506,6 @@ if (version() == ParsedQuicVersion::Draft29()) { retry_packet = retry_packet29; retry_packet_length = QUICHE_ARRAYSIZE(retry_packet29); - } else if (version() == ParsedQuicVersion::Draft28()) { - retry_packet = retry_packet28; - retry_packet_length = QUICHE_ARRAYSIZE(retry_packet28); } else if (version() == ParsedQuicVersion::Draft27()) { retry_packet = retry_packet27; retry_packet_length = QUICHE_ARRAYSIZE(retry_packet27);
diff --git a/quic/core/quic_dispatcher_test.cc b/quic/core/quic_dispatcher_test.cc index fc8fd4a..ae084ec 100644 --- a/quic/core/quic_dispatcher_test.cc +++ b/quic/core/quic_dispatcher_test.cc
@@ -1023,7 +1023,7 @@ TEST_P(QuicDispatcherTestOneVersion, RejectDeprecatedVersionsWithVersionNegotiation) { - static_assert(quic::SupportedVersions().size() == 10u, + static_assert(quic::SupportedVersions().size() == 9u, "Please add deprecated versions to this test"); QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1); CreateTimeWaitListManager();
diff --git a/quic/core/quic_version_manager.cc b/quic/core/quic_version_manager.cc index 951b7cb..90c4982 100644 --- a/quic/core/quic_version_manager.cc +++ b/quic/core/quic_version_manager.cc
@@ -17,8 +17,6 @@ ParsedQuicVersionVector supported_versions) : enable_version_draft_29_( GetQuicReloadableFlag(quic_enable_version_draft_29)), - enable_version_draft_28_( - GetQuicReloadableFlag(quic_enable_version_draft_28)), disable_version_draft_27_( GetQuicReloadableFlag(quic_disable_version_draft_27)), disable_version_draft_25_( @@ -30,7 +28,7 @@ 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() == 10u, + static_assert(SupportedVersions().size() == 9u, "Supported versions out of sync"); RefilterSupportedVersions(); } @@ -60,12 +58,10 @@ } void QuicVersionManager::MaybeRefilterSupportedVersions() { - static_assert(SupportedVersions().size() == 10u, + static_assert(SupportedVersions().size() == 9u, "Supported versions out of sync"); if (enable_version_draft_29_ != GetQuicReloadableFlag(quic_enable_version_draft_29) || - enable_version_draft_28_ != - GetQuicReloadableFlag(quic_enable_version_draft_28) || disable_version_draft_27_ != GetQuicReloadableFlag(quic_disable_version_draft_27) || disable_version_draft_25_ != @@ -84,8 +80,6 @@ GetQuicReloadableFlag(quic_disable_version_q043)) { enable_version_draft_29_ = GetQuicReloadableFlag(quic_enable_version_draft_29); - enable_version_draft_28_ = - GetQuicReloadableFlag(quic_enable_version_draft_28); disable_version_draft_27_ = GetQuicReloadableFlag(quic_disable_version_draft_27); disable_version_draft_25_ =
diff --git a/quic/core/quic_version_manager.h b/quic/core/quic_version_manager.h index 6bdf2d3..e6bb8f6 100644 --- a/quic/core/quic_version_manager.h +++ b/quic/core/quic_version_manager.h
@@ -54,8 +54,6 @@ // Cached value of reloadable flags. // quic_enable_version_draft_29 flag bool enable_version_draft_29_; - // quic_enable_version_draft_28 flag - bool enable_version_draft_28_; // quic_disable_version_draft_27 flag bool disable_version_draft_27_; // quic_disable_version_draft_25 flag
diff --git a/quic/core/quic_version_manager_test.cc b/quic/core/quic_version_manager_test.cc index 89d1d12..4687b79 100644 --- a/quic/core/quic_version_manager_test.cc +++ b/quic/core/quic_version_manager_test.cc
@@ -18,10 +18,9 @@ class QuicVersionManagerTest : public QuicTest {}; TEST_F(QuicVersionManagerTest, QuicVersionManager) { - static_assert(SupportedVersions().size() == 10u, + static_assert(SupportedVersions().size() == 9u, "Supported versions out of sync"); SetQuicReloadableFlag(quic_enable_version_draft_29, false); - SetQuicReloadableFlag(quic_enable_version_draft_28, false); SetQuicReloadableFlag(quic_disable_version_draft_27, true); SetQuicReloadableFlag(quic_disable_version_draft_25, true); SetQuicReloadableFlag(quic_disable_version_t050, false); @@ -70,10 +69,10 @@ ElementsAre("h3-29", "h3-T050", "h3-Q050", "h3-Q049", "h3-Q048", "h3-Q046", "h3-Q043")); - SetQuicReloadableFlag(quic_enable_version_draft_28, true); + SetQuicReloadableFlag(quic_disable_version_draft_27, false); expected_parsed_versions.insert( expected_parsed_versions.begin() + 1, - ParsedQuicVersion(PROTOCOL_TLS1_3, QUIC_VERSION_IETF_DRAFT_28)); + ParsedQuicVersion(PROTOCOL_TLS1_3, QUIC_VERSION_IETF_DRAFT_27)); EXPECT_EQ(expected_parsed_versions, manager.GetSupportedVersions()); EXPECT_EQ(expected_parsed_versions.size() - 3, manager.GetSupportedVersionsWithQuicCrypto().size()); @@ -82,37 +81,21 @@ EXPECT_EQ(CurrentSupportedVersionsWithQuicCrypto(), manager.GetSupportedVersionsWithQuicCrypto()); EXPECT_THAT(manager.GetSupportedAlpns(), - ElementsAre("h3-29", "h3-28", "h3-T050", "h3-Q050", "h3-Q049", + ElementsAre("h3-29", "h3-27", "h3-T050", "h3-Q050", "h3-Q049", "h3-Q048", "h3-Q046", "h3-Q043")); - SetQuicReloadableFlag(quic_disable_version_draft_27, false); - expected_parsed_versions.insert( - expected_parsed_versions.begin() + 2, - ParsedQuicVersion(PROTOCOL_TLS1_3, QUIC_VERSION_IETF_DRAFT_27)); - EXPECT_EQ(expected_parsed_versions, manager.GetSupportedVersions()); - EXPECT_EQ(expected_parsed_versions.size() - 4, - manager.GetSupportedVersionsWithQuicCrypto().size()); - EXPECT_EQ(FilterSupportedVersions(AllSupportedVersions()), - manager.GetSupportedVersions()); - EXPECT_EQ(CurrentSupportedVersionsWithQuicCrypto(), - manager.GetSupportedVersionsWithQuicCrypto()); - EXPECT_THAT(manager.GetSupportedAlpns(), - ElementsAre("h3-29", "h3-28", "h3-27", "h3-T050", "h3-Q050", - "h3-Q049", "h3-Q048", "h3-Q046", "h3-Q043")); - SetQuicReloadableFlag(quic_disable_version_draft_25, false); expected_parsed_versions.insert( - expected_parsed_versions.begin() + 3, + expected_parsed_versions.begin() + 2, ParsedQuicVersion(PROTOCOL_TLS1_3, QUIC_VERSION_IETF_DRAFT_25)); EXPECT_EQ(expected_parsed_versions, manager.GetSupportedVersions()); - EXPECT_EQ(expected_parsed_versions.size() - 5, + EXPECT_EQ(expected_parsed_versions.size() - 4, manager.GetSupportedVersionsWithQuicCrypto().size()); EXPECT_EQ(CurrentSupportedVersionsWithQuicCrypto(), manager.GetSupportedVersionsWithQuicCrypto()); - EXPECT_THAT( - manager.GetSupportedAlpns(), - ElementsAre("h3-29", "h3-28", "h3-27", "h3-25", "h3-T050", "h3-Q050", - "h3-Q049", "h3-Q048", "h3-Q046", "h3-Q043")); + EXPECT_THAT(manager.GetSupportedAlpns(), + ElementsAre("h3-29", "h3-27", "h3-25", "h3-T050", "h3-Q050", + "h3-Q049", "h3-Q048", "h3-Q046", "h3-Q043")); } } // namespace
diff --git a/quic/core/quic_versions.cc b/quic/core/quic_versions.cc index 1a1ddc7..925993f 100644 --- a/quic/core/quic_versions.cc +++ b/quic/core/quic_versions.cc
@@ -40,14 +40,12 @@ } void SetVersionFlag(const ParsedQuicVersion& version, bool should_enable) { - static_assert(SupportedVersions().size() == 10u, + static_assert(SupportedVersions().size() == 9u, "Supported versions out of sync"); const bool enable = should_enable; const bool disable = !should_enable; if (version == ParsedQuicVersion::Draft29()) { SetQuicReloadableFlag(quic_enable_version_draft_29, enable); - } else if (version == ParsedQuicVersion::Draft28()) { - SetQuicReloadableFlag(quic_enable_version_draft_28, enable); } else if (version == ParsedQuicVersion::Draft27()) { SetQuicReloadableFlag(quic_disable_version_draft_27, disable); } else if (version == ParsedQuicVersion::Draft25()) { @@ -191,7 +189,7 @@ bool ParsedQuicVersion::AuthenticatesHandshakeConnectionIds() const { DCHECK(IsKnown()); - return transport_version >= QUIC_VERSION_IETF_DRAFT_28; + return transport_version > QUIC_VERSION_IETF_DRAFT_27; } bool ParsedQuicVersion::UsesTls() const { @@ -247,7 +245,7 @@ << parsed_version.handshake_protocol; return 0; } - static_assert(SupportedVersions().size() == 10u, + static_assert(SupportedVersions().size() == 9u, "Supported versions out of sync"); switch (parsed_version.transport_version) { case QUIC_VERSION_43: @@ -272,12 +270,6 @@ } QUIC_BUG << "QUIC_VERSION_IETF_DRAFT_27 requires TLS"; return 0; - case QUIC_VERSION_IETF_DRAFT_28: - if (parsed_version.handshake_protocol == PROTOCOL_TLS1_3) { - return MakeVersionLabel(0xff, 0x00, 0x00, 28); - } - QUIC_BUG << "QUIC_VERSION_IETF_DRAFT_28 requires TLS"; - return 0; case QUIC_VERSION_IETF_DRAFT_29: if (parsed_version.handshake_protocol == PROTOCOL_TLS1_3) { return MakeVersionLabel(0xff, 0x00, 0x00, 29); @@ -445,11 +437,6 @@ if (GetQuicReloadableFlag(quic_enable_version_draft_29)) { filtered_versions.push_back(version); } - } else if (version.transport_version == QUIC_VERSION_IETF_DRAFT_28) { - QUIC_BUG_IF(version.handshake_protocol != PROTOCOL_TLS1_3); - if (GetQuicReloadableFlag(quic_enable_version_draft_28)) { - filtered_versions.push_back(version); - } } else if (version.transport_version == QUIC_VERSION_IETF_DRAFT_27) { QUIC_BUG_IF(version.handshake_protocol != PROTOCOL_TLS1_3); if (!GetQuicReloadableFlag(quic_disable_version_draft_27)) { @@ -576,7 +563,7 @@ return #x std::string QuicVersionToString(QuicTransportVersion transport_version) { - static_assert(SupportedTransportVersions().size() == 9u, + static_assert(SupportedTransportVersions().size() == 8u, "Supported versions out of sync"); switch (transport_version) { RETURN_STRING_LITERAL(QUIC_VERSION_43); @@ -586,7 +573,6 @@ RETURN_STRING_LITERAL(QUIC_VERSION_50); RETURN_STRING_LITERAL(QUIC_VERSION_IETF_DRAFT_25); RETURN_STRING_LITERAL(QUIC_VERSION_IETF_DRAFT_27); - RETURN_STRING_LITERAL(QUIC_VERSION_IETF_DRAFT_28); RETURN_STRING_LITERAL(QUIC_VERSION_IETF_DRAFT_29); RETURN_STRING_LITERAL(QUIC_VERSION_UNSUPPORTED); RETURN_STRING_LITERAL(QUIC_VERSION_RESERVED_FOR_NEGOTIATION); @@ -692,8 +678,6 @@ if (parsed_version.handshake_protocol == PROTOCOL_TLS1_3) { if (parsed_version.transport_version == QUIC_VERSION_IETF_DRAFT_29) { return "h3-29"; - } else if (parsed_version.transport_version == QUIC_VERSION_IETF_DRAFT_28) { - return "h3-28"; } else if (parsed_version.transport_version == QUIC_VERSION_IETF_DRAFT_27) { return "h3-27"; } else if (parsed_version.transport_version == QUIC_VERSION_IETF_DRAFT_25) {
diff --git a/quic/core/quic_versions.h b/quic/core/quic_versions.h index d42c13f..9c7288a 100644 --- a/quic/core/quic_versions.h +++ b/quic/core/quic_versions.h
@@ -119,7 +119,7 @@ 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. - QUIC_VERSION_IETF_DRAFT_28 = 72, // draft-ietf-quic-transport-28. + // Number 72 used to represent draft-ietf-quic-transport-28. QUIC_VERSION_IETF_DRAFT_29 = 73, // draft-ietf-quic-transport-29. // Version 99 was a dumping ground for IETF QUIC changes which were not yet // yet ready for production between 2018-02 and 2020-02. @@ -135,9 +135,8 @@ // This array contains QUIC transport versions which we currently support. // DEPRECATED. Use SupportedVersions() instead. -constexpr std::array<QuicTransportVersion, 9> SupportedTransportVersions() { +constexpr std::array<QuicTransportVersion, 8> SupportedTransportVersions() { return {QUIC_VERSION_IETF_DRAFT_29, - QUIC_VERSION_IETF_DRAFT_28, QUIC_VERSION_IETF_DRAFT_27, QUIC_VERSION_IETF_DRAFT_25, QUIC_VERSION_50, @@ -201,7 +200,6 @@ return transport_version != QUIC_VERSION_UNSUPPORTED && transport_version != QUIC_VERSION_IETF_DRAFT_25 && transport_version != QUIC_VERSION_IETF_DRAFT_27 && - transport_version != QUIC_VERSION_IETF_DRAFT_28 && transport_version != QUIC_VERSION_IETF_DRAFT_29; case PROTOCOL_TLS1_3: // The TLS handshake is only deployable if CRYPTO frames are also used. @@ -257,10 +255,6 @@ return ParsedQuicVersion(PROTOCOL_TLS1_3, QUIC_VERSION_IETF_DRAFT_29); } - static constexpr ParsedQuicVersion Draft28() { - return ParsedQuicVersion(PROTOCOL_TLS1_3, QUIC_VERSION_IETF_DRAFT_28); - } - static constexpr ParsedQuicVersion Draft27() { return ParsedQuicVersion(PROTOCOL_TLS1_3, QUIC_VERSION_IETF_DRAFT_27); } @@ -429,13 +423,13 @@ return {PROTOCOL_TLS1_3, PROTOCOL_QUIC_CRYPTO}; } -constexpr std::array<ParsedQuicVersion, 10> SupportedVersions() { +constexpr std::array<ParsedQuicVersion, 9> SupportedVersions() { return { - ParsedQuicVersion::Draft29(), ParsedQuicVersion::Draft28(), - ParsedQuicVersion::Draft27(), ParsedQuicVersion::Draft25(), - ParsedQuicVersion::T050(), ParsedQuicVersion::Q050(), - ParsedQuicVersion::Q049(), ParsedQuicVersion::Q048(), - ParsedQuicVersion::Q046(), ParsedQuicVersion::Q043(), + ParsedQuicVersion::Draft29(), ParsedQuicVersion::Draft27(), + ParsedQuicVersion::Draft25(), ParsedQuicVersion::T050(), + ParsedQuicVersion::Q050(), ParsedQuicVersion::Q049(), + ParsedQuicVersion::Q048(), ParsedQuicVersion::Q046(), + ParsedQuicVersion::Q043(), }; }
diff --git a/quic/core/quic_versions_test.cc b/quic/core/quic_versions_test.cc index 14c5793..c7ebb82 100644 --- a/quic/core/quic_versions_test.cc +++ b/quic/core/quic_versions_test.cc
@@ -239,8 +239,6 @@ EXPECT_EQ(ParsedQuicVersion::T050(), ParseQuicVersionString("h3-T050")); EXPECT_EQ(ParsedQuicVersion::Draft29(), ParseQuicVersionString("ff00001d")); EXPECT_EQ(ParsedQuicVersion::Draft29(), ParseQuicVersionString("h3-29")); - EXPECT_EQ(ParsedQuicVersion::Draft28(), ParseQuicVersionString("ff00001c")); - EXPECT_EQ(ParsedQuicVersion::Draft28(), ParseQuicVersionString("h3-28")); EXPECT_EQ(ParsedQuicVersion::Draft27(), ParseQuicVersionString("ff00001b")); EXPECT_EQ(ParsedQuicVersion::Draft27(), ParseQuicVersionString("h3-27")); EXPECT_EQ(ParsedQuicVersion::Draft25(), ParseQuicVersionString("ff000019")); @@ -255,8 +253,6 @@ QUIC_VERSION_IETF_DRAFT_25); ParsedQuicVersion version_draft_27(PROTOCOL_TLS1_3, QUIC_VERSION_IETF_DRAFT_27); - ParsedQuicVersion version_draft_28(PROTOCOL_TLS1_3, - QUIC_VERSION_IETF_DRAFT_28); ParsedQuicVersion version_draft_29 = ParsedQuicVersion::Draft29(); EXPECT_THAT(ParseQuicVersionVectorString(""), IsEmpty()); @@ -278,8 +274,6 @@ ElementsAre(version_draft_25, version_draft_27)); EXPECT_THAT(ParseQuicVersionVectorString("h3-27,h3-25"), ElementsAre(version_draft_27, version_draft_25)); - EXPECT_THAT(ParseQuicVersionVectorString("h3-28,h3-27"), - ElementsAre(version_draft_28, version_draft_27)); EXPECT_THAT(ParseQuicVersionVectorString("h3-29,h3-27"), ElementsAre(version_draft_29, version_draft_27)); @@ -499,7 +493,7 @@ // 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() == 9u, + static_assert(SupportedTransportVersions().size() == 8u, "Supported versions out of sync"); EXPECT_EQ(QUIC_VERSION_43, 43); EXPECT_EQ(QUIC_VERSION_46, 46); @@ -508,12 +502,11 @@ EXPECT_EQ(QUIC_VERSION_50, 50); EXPECT_EQ(QUIC_VERSION_IETF_DRAFT_25, 70); EXPECT_EQ(QUIC_VERSION_IETF_DRAFT_27, 71); - EXPECT_EQ(QUIC_VERSION_IETF_DRAFT_28, 72); EXPECT_EQ(QUIC_VERSION_IETF_DRAFT_29, 73); } TEST_F(QuicVersionsTest, AlpnForVersion) { - static_assert(SupportedVersions().size() == 10u, + static_assert(SupportedVersions().size() == 9u, "Supported versions out of sync"); ParsedQuicVersion parsed_version_q048 = ParsedQuicVersion::Q048(); ParsedQuicVersion parsed_version_q049 = ParsedQuicVersion::Q049(); @@ -521,7 +514,6 @@ ParsedQuicVersion parsed_version_t050 = ParsedQuicVersion::T050(); ParsedQuicVersion parsed_version_draft_25 = ParsedQuicVersion::Draft25(); ParsedQuicVersion parsed_version_draft_27 = ParsedQuicVersion::Draft27(); - ParsedQuicVersion parsed_version_draft_28 = ParsedQuicVersion::Draft28(); EXPECT_EQ("h3-Q048", AlpnForVersion(parsed_version_q048)); EXPECT_EQ("h3-Q049", AlpnForVersion(parsed_version_q049)); @@ -529,7 +521,6 @@ EXPECT_EQ("h3-T050", AlpnForVersion(parsed_version_t050)); EXPECT_EQ("h3-25", AlpnForVersion(parsed_version_draft_25)); EXPECT_EQ("h3-27", AlpnForVersion(parsed_version_draft_27)); - EXPECT_EQ("h3-28", AlpnForVersion(parsed_version_draft_28)); EXPECT_EQ("h3-29", AlpnForVersion(ParsedQuicVersion::Draft29())); }