gfe-relnote: Disable IETF QUIC on Cloud VIPs. Protected by gfe2_restart_flag_quic_disable_ietf_quic_on_cloud_vips. PiperOrigin-RevId: 304627752 Change-Id: I494b166b7f5879bc19ad74a553ddd65083987bd6
diff --git a/quic/core/quic_dispatcher.cc b/quic/core/quic_dispatcher.cc index c160ced..b6b1f63 100644 --- a/quic/core/quic_dispatcher.cc +++ b/quic/core/quic_dispatcher.cc
@@ -975,6 +975,11 @@ return version_manager_->GetSupportedVersions(); } +const ParsedQuicVersionVector& +QuicDispatcher::GetSupportedVersionsWithQuicCrypto() { + return version_manager_->GetSupportedVersionsWithQuicCrypto(); +} + void QuicDispatcher::DeliverPacketsToSession( const std::list<BufferedPacket>& packets, QuicSession* session) {
diff --git a/quic/core/quic_dispatcher.h b/quic/core/quic_dispatcher.h index 71cbb57..1c1229a 100644 --- a/quic/core/quic_dispatcher.h +++ b/quic/core/quic_dispatcher.h
@@ -210,6 +210,8 @@ const ParsedQuicVersionVector& GetSupportedVersions(); + const ParsedQuicVersionVector& GetSupportedVersionsWithQuicCrypto(); + const QuicConfig& config() const { return *config_; } const QuicCryptoServerConfig* crypto_config() const { return crypto_config_; }
diff --git a/quic/core/quic_version_manager.cc b/quic/core/quic_version_manager.cc index 1dda888..60d97c9 100644 --- a/quic/core/quic_version_manager.cc +++ b/quic/core/quic_version_manager.cc
@@ -44,6 +44,12 @@ return filtered_supported_versions_; } +const ParsedQuicVersionVector& +QuicVersionManager::GetSupportedVersionsWithQuicCrypto() { + MaybeRefilterSupportedVersions(); + return filtered_supported_versions_with_quic_crypto_; +} + void QuicVersionManager::MaybeRefilterSupportedVersions() { static_assert(SupportedVersions().size() == 8u, "Supported versions out of sync"); @@ -80,6 +86,7 @@ void QuicVersionManager::RefilterSupportedVersions() { filtered_supported_versions_ = FilterSupportedVersions(allowed_supported_versions_); + filtered_supported_versions_with_quic_crypto_.clear(); filtered_transport_versions_.clear(); for (ParsedQuicVersion version : filtered_supported_versions_) { auto transport_version = version.transport_version; @@ -88,6 +95,9 @@ transport_version) == filtered_transport_versions_.end()) { filtered_transport_versions_.push_back(transport_version); } + if (version.handshake_protocol == PROTOCOL_QUIC_CRYPTO) { + filtered_supported_versions_with_quic_crypto_.push_back(version); + } } }
diff --git a/quic/core/quic_version_manager.h b/quic/core/quic_version_manager.h index 4d68374..1673c16 100644 --- a/quic/core/quic_version_manager.h +++ b/quic/core/quic_version_manager.h
@@ -26,6 +26,9 @@ // as the versions passed to the constructor. const ParsedQuicVersionVector& GetSupportedVersions(); + // Returns currently supported versions using QUIC crypto. + const ParsedQuicVersionVector& GetSupportedVersionsWithQuicCrypto(); + protected: // If the value of any reloadable flag is different from the cached value, // re-filter |filtered_supported_versions_| and update the cached flag values. @@ -63,6 +66,8 @@ // This vector contains QUIC versions which are currently supported based on // flags. ParsedQuicVersionVector filtered_supported_versions_; + // Currently supported versions using QUIC crypto. + ParsedQuicVersionVector filtered_supported_versions_with_quic_crypto_; // This vector contains the transport versions from // |filtered_supported_versions_|. No guarantees are made that the same // transport version isn't repeated.
diff --git a/quic/core/quic_version_manager_test.cc b/quic/core/quic_version_manager_test.cc index 98dc4a3..b8415b3 100644 --- a/quic/core/quic_version_manager_test.cc +++ b/quic/core/quic_version_manager_test.cc
@@ -41,30 +41,44 @@ ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, QUIC_VERSION_43)); EXPECT_EQ(expected_parsed_versions, manager.GetSupportedVersions()); + EXPECT_EQ(expected_parsed_versions, + manager.GetSupportedVersionsWithQuicCrypto()); EXPECT_EQ(FilterSupportedVersions(AllSupportedVersions()), manager.GetSupportedVersions()); + EXPECT_EQ(CurrentSupportedVersionsWithQuicCrypto(), + manager.GetSupportedVersionsWithQuicCrypto()); SetQuicReloadableFlag(quic_enable_version_draft_27, true); expected_parsed_versions.push_back( ParsedQuicVersion(PROTOCOL_TLS1_3, QUIC_VERSION_IETF_DRAFT_27)); EXPECT_EQ(expected_parsed_versions, manager.GetSupportedVersions()); + EXPECT_EQ(expected_parsed_versions.size() - 1, + manager.GetSupportedVersionsWithQuicCrypto().size()); EXPECT_EQ(FilterSupportedVersions(AllSupportedVersions()), manager.GetSupportedVersions()); + EXPECT_EQ(CurrentSupportedVersionsWithQuicCrypto(), + manager.GetSupportedVersionsWithQuicCrypto()); SetQuicReloadableFlag(quic_enable_version_draft_25_v3, true); expected_parsed_versions.push_back( ParsedQuicVersion(PROTOCOL_TLS1_3, QUIC_VERSION_IETF_DRAFT_25)); EXPECT_EQ(expected_parsed_versions, manager.GetSupportedVersions()); - EXPECT_EQ(FilterSupportedVersions(AllSupportedVersions()), - manager.GetSupportedVersions()); + EXPECT_EQ(expected_parsed_versions.size() - 2, + manager.GetSupportedVersionsWithQuicCrypto().size()); + EXPECT_EQ(CurrentSupportedVersionsWithQuicCrypto(), + manager.GetSupportedVersionsWithQuicCrypto()); SetQuicReloadableFlag(quic_enable_version_t050, true); expected_parsed_versions.push_back( ParsedQuicVersion(PROTOCOL_TLS1_3, QUIC_VERSION_50)); EXPECT_EQ(expected_parsed_versions, manager.GetSupportedVersions()); + EXPECT_EQ(expected_parsed_versions.size() - 3, + manager.GetSupportedVersionsWithQuicCrypto().size()); EXPECT_EQ(FilterSupportedVersions(AllSupportedVersions()), manager.GetSupportedVersions()); + EXPECT_EQ(CurrentSupportedVersionsWithQuicCrypto(), + manager.GetSupportedVersionsWithQuicCrypto()); } } // namespace