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