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(),