Enable HTTP/3 by default for L7XLBs that don't explicitly specify a quicOverride.
Flag is blocked initially, I will unblock it after cl/395525946 is rolled out.
Protected by FLAGS_quic_restart_flag_quic_default_enable_http3_for_gclb.
PiperOrigin-RevId: 396449848
diff --git a/quic/core/quic_version_manager.cc b/quic/core/quic_version_manager.cc
index 573d6d1..58c0c51 100644
--- a/quic/core/quic_version_manager.cc
+++ b/quic/core/quic_version_manager.cc
@@ -46,6 +46,12 @@
}
const ParsedQuicVersionVector&
+QuicVersionManager::GetSupportedVersionsWithOnlyHttp3() {
+ MaybeRefilterSupportedVersions();
+ return filtered_supported_versions_with_http3_;
+}
+
+const ParsedQuicVersionVector&
QuicVersionManager::GetSupportedVersionsWithQuicCrypto() {
MaybeRefilterSupportedVersions();
return filtered_supported_versions_with_quic_crypto_;
@@ -86,6 +92,7 @@
void QuicVersionManager::RefilterSupportedVersions() {
filtered_supported_versions_ =
FilterSupportedVersions(allowed_supported_versions_);
+ filtered_supported_versions_with_http3_.clear();
filtered_supported_versions_with_quic_crypto_.clear();
filtered_transport_versions_.clear();
filtered_supported_alpns_.clear();
@@ -96,6 +103,9 @@
transport_version) == filtered_transport_versions_.end()) {
filtered_transport_versions_.push_back(transport_version);
}
+ if (version.UsesHttp3()) {
+ filtered_supported_versions_with_http3_.push_back(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 487d057..501ecc5 100644
--- a/quic/core/quic_version_manager.h
+++ b/quic/core/quic_version_manager.h
@@ -22,6 +22,9 @@
// as the versions passed to the constructor.
const ParsedQuicVersionVector& GetSupportedVersions();
+ // Returns currently supported versions using HTTP/3.
+ const ParsedQuicVersionVector& GetSupportedVersionsWithOnlyHttp3();
+
// Returns currently supported versions using QUIC crypto.
const ParsedQuicVersionVector& GetSupportedVersionsWithQuicCrypto();
@@ -83,6 +86,8 @@
// This vector contains QUIC versions which are currently supported based on
// flags.
ParsedQuicVersionVector filtered_supported_versions_;
+ // Currently supported versions using HTTP/3.
+ ParsedQuicVersionVector filtered_supported_versions_with_http3_;
// Currently supported versions using QUIC crypto.
ParsedQuicVersionVector filtered_supported_versions_with_quic_crypto_;
// This vector contains the transport versions from
diff --git a/quic/core/quic_version_manager_test.cc b/quic/core/quic_version_manager_test.cc
index 5776b39..75ceed4 100644
--- a/quic/core/quic_version_manager_test.cc
+++ b/quic/core/quic_version_manager_test.cc
@@ -37,6 +37,7 @@
EXPECT_EQ(FilterSupportedVersions(AllSupportedVersions()),
manager.GetSupportedVersions());
+ EXPECT_TRUE(manager.GetSupportedVersionsWithOnlyHttp3().empty());
EXPECT_EQ(CurrentSupportedVersionsWithQuicCrypto(),
manager.GetSupportedVersionsWithQuicCrypto());
EXPECT_THAT(manager.GetSupportedAlpns(),
@@ -51,6 +52,9 @@
manager.GetSupportedVersionsWithQuicCrypto().size());
EXPECT_EQ(FilterSupportedVersions(AllSupportedVersions()),
manager.GetSupportedVersions());
+ EXPECT_EQ(1u, manager.GetSupportedVersionsWithOnlyHttp3().size());
+ EXPECT_EQ(CurrentSupportedHttp3Versions(),
+ manager.GetSupportedVersionsWithOnlyHttp3());
EXPECT_EQ(CurrentSupportedVersionsWithQuicCrypto(),
manager.GetSupportedVersionsWithQuicCrypto());
EXPECT_THAT(manager.GetSupportedAlpns(),
@@ -65,6 +69,9 @@
manager.GetSupportedVersionsWithQuicCrypto().size());
EXPECT_EQ(FilterSupportedVersions(AllSupportedVersions()),
manager.GetSupportedVersions());
+ EXPECT_EQ(1u, manager.GetSupportedVersionsWithOnlyHttp3().size());
+ EXPECT_EQ(CurrentSupportedHttp3Versions(),
+ manager.GetSupportedVersionsWithOnlyHttp3());
EXPECT_EQ(CurrentSupportedVersionsWithQuicCrypto(),
manager.GetSupportedVersionsWithQuicCrypto());
EXPECT_THAT(manager.GetSupportedAlpns(),