Deprecate gfe2_reloadable_flag_quic_h3_datagram The functionality behind this flag is disabled by default, and is enabled in WebTransport by an override which ignores the flag. This CL cleans up our MASQUE and test-only code to also use overrides instead of the flag. PiperOrigin-RevId: 379503542
diff --git a/quic/core/http/end_to_end_test.cc b/quic/core/http/end_to_end_test.cc index 8efba88..626166f 100644 --- a/quic/core/http/end_to_end_test.cc +++ b/quic/core/http/end_to_end_test.cc
@@ -363,7 +363,6 @@ bool Initialize() { if (enable_web_transport_) { - SetQuicReloadableFlag(quic_h3_datagram, true); memory_cache_backend_.set_enable_webtransport(true); } @@ -6043,6 +6042,7 @@ WebTransportHttp3* web_transport = CreateWebTransportSession("/echo", /*wait_for_server_response=*/true); + ASSERT_NE(web_transport, nullptr); server_thread_->Pause(); QuicSpdySession* server_session = GetServerSession(); @@ -6064,6 +6064,7 @@ WebTransportHttp3* web_transport = CreateWebTransportSession("/echo", /*wait_for_server_response=*/true); + ASSERT_NE(web_transport, nullptr); server_thread_->Pause(); QuicSpdySession* server_session = GetServerSession();
diff --git a/quic/core/http/quic_send_control_stream_test.cc b/quic/core/http/quic_send_control_stream_test.cc index c5af1dc..3066cb3 100644 --- a/quic/core/http/quic_send_control_stream_test.cc +++ b/quic/core/http/quic_send_control_stream_test.cc
@@ -133,7 +133,7 @@ "4040" // 0x40 as the reserved frame type "01" // 1 byte frame length "61"); // payload "a" - if (GetQuicReloadableFlag(quic_h3_datagram)) { + if (QuicSpdySessionPeer::ShouldNegotiateHttp3Datagram(&session_)) { expected_write_data = absl::HexStringToBytes( "00" // stream type: control stream "04" // frame type: SETTINGS frame
diff --git a/quic/core/http/quic_spdy_session.cc b/quic/core/http/quic_spdy_session.cc index 2867d52..0ea2452 100644 --- a/quic/core/http/quic_spdy_session.cc +++ b/quic/core/http/quic_spdy_session.cc
@@ -553,7 +553,6 @@ settings_.values[SETTINGS_MAX_FIELD_SECTION_SIZE] = max_inbound_header_list_size_; if (ShouldNegotiateHttp3Datagram() && version().UsesHttp3()) { - QUIC_RELOADABLE_FLAG_COUNT(quic_h3_datagram); settings_.values[SETTINGS_H3_DATAGRAM] = 1; } if (WillNegotiateWebTransport()) { @@ -1850,7 +1849,7 @@ } bool QuicSpdySession::ShouldNegotiateHttp3Datagram() { - return GetQuicReloadableFlag(quic_h3_datagram); + return false; } #undef ENDPOINT // undef for jumbo builds
diff --git a/quic/core/http/quic_spdy_session_test.cc b/quic/core/http/quic_spdy_session_test.cc index 163377b..9221937 100644 --- a/quic/core/http/quic_spdy_session_test.cc +++ b/quic/core/http/quic_spdy_session_test.cc
@@ -355,6 +355,13 @@ bool ShouldNegotiateWebTransport() override { return supports_webtransport_; } void set_supports_webtransport(bool value) { supports_webtransport_ = value; } + bool ShouldNegotiateHttp3Datagram() override { + return should_negotiate_h3_datagram_; + } + void set_should_negotiate_h3_datagram(bool value) { + should_negotiate_h3_datagram_ = value; + } + MOCK_METHOD(void, OnAcceptChFrame, (const AcceptChFrame&), (override)); using QuicSession::closed_streams; @@ -367,6 +374,7 @@ bool writev_consumes_all_data_; bool supports_webtransport_ = false; + bool should_negotiate_h3_datagram_ = false; }; class QuicSpdySessionTestBase : public QuicTestWithParam<ParsedQuicVersion> { @@ -3486,7 +3494,7 @@ if (!version().UsesHttp3()) { return; } - SetQuicReloadableFlag(quic_h3_datagram, true); + session_.set_should_negotiate_h3_datagram(true); // HTTP/3 datagrams aren't supported before SETTINGS are received. EXPECT_FALSE(session_.h3_datagram_supported()); // Receive SETTINGS. @@ -3510,7 +3518,7 @@ return; } CompleteHandshake(); - SetQuicReloadableFlag(quic_h3_datagram, true); + session_.set_should_negotiate_h3_datagram(true); QuicSpdySessionPeer::SetH3DatagramSupported(&session_, true); SavingHttp3DatagramVisitor h3_datagram_visitor; QuicDatagramFlowId flow_id = session_.GetNextDatagramFlowId(); @@ -3536,7 +3544,7 @@ return; } CompleteHandshake(); - SetQuicReloadableFlag(quic_h3_datagram, true); + session_.set_should_negotiate_h3_datagram(true); QuicSpdySessionPeer::SetH3DatagramSupported(&session_, true); QuicDatagramFlowId flow_id = session_.GetNextDatagramFlowId(); std::string h3_datagram_payload = {1, 2, 3, 4, 5, 6}; @@ -3550,7 +3558,7 @@ if (!version().UsesHttp3()) { return; } - SetQuicReloadableFlag(quic_h3_datagram, true); + session_.set_should_negotiate_h3_datagram(true); session_.set_supports_webtransport(true); EXPECT_FALSE(session_.SupportsWebTransport()); @@ -3580,7 +3588,7 @@ if (!version().UsesHttp3()) { return; } - SetQuicReloadableFlag(quic_h3_datagram, true); + session_.set_should_negotiate_h3_datagram(true); session_.set_supports_webtransport(true); EXPECT_FALSE(session_.SupportsWebTransport()); @@ -3610,7 +3618,7 @@ if (!version().UsesHttp3()) { return; } - SetQuicReloadableFlag(quic_h3_datagram, true); + session_.set_should_negotiate_h3_datagram(true); session_.set_supports_webtransport(true); EXPECT_FALSE(session_.SupportsWebTransport()); @@ -3627,7 +3635,7 @@ if (!version().UsesHttp3()) { return; } - SetQuicReloadableFlag(quic_h3_datagram, true); + session_.set_should_negotiate_h3_datagram(true); session_.set_supports_webtransport(true); CompleteHandshake(); @@ -3660,7 +3668,7 @@ if (!version().UsesHttp3()) { return; } - SetQuicReloadableFlag(quic_h3_datagram, true); + session_.set_should_negotiate_h3_datagram(true); session_.set_supports_webtransport(true); CompleteHandshake(); @@ -3701,7 +3709,7 @@ if (!version().UsesHttp3()) { return; } - SetQuicReloadableFlag(quic_h3_datagram, true); + session_.set_should_negotiate_h3_datagram(true); session_.set_supports_webtransport(true); CompleteHandshake();
diff --git a/quic/core/http/quic_spdy_stream_test.cc b/quic/core/http/quic_spdy_stream_test.cc index 18526a5..7648277 100644 --- a/quic/core/http/quic_spdy_stream_test.cc +++ b/quic/core/http/quic_spdy_stream_test.cc
@@ -259,8 +259,16 @@ bool ShouldNegotiateWebTransport() override { return enable_webtransport_; } void EnableWebTransport() { enable_webtransport_ = true; } + bool ShouldNegotiateHttp3Datagram() override { + return should_negotiate_h3_datagram_; + } + void set_should_negotiate_h3_datagram(bool value) { + should_negotiate_h3_datagram_ = value; + } + private: bool enable_webtransport_ = false; + bool should_negotiate_h3_datagram_ = false; StrictMock<TestCryptoStream> crypto_stream_; }; @@ -3107,6 +3115,7 @@ } InitializeWithPerspective(kShouldProcessData, Perspective::IS_CLIENT); + session_->set_should_negotiate_h3_datagram(true); session_->EnableWebTransport(); QuicSpdySessionPeer::EnableWebTransport(*session_); @@ -3129,6 +3138,7 @@ } Initialize(kShouldProcessData); + session_->set_should_negotiate_h3_datagram(true); session_->EnableWebTransport(); QuicSpdySessionPeer::EnableWebTransport(*session_);
diff --git a/quic/core/quic_flags_list.h b/quic/core/quic_flags_list.h index 8048bc7..02e19b4 100644 --- a/quic/core/quic_flags_list.h +++ b/quic/core/quic_flags_list.h
@@ -123,8 +123,6 @@ QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_deprecate_incoming_connection_ids, true) // When the STMP connection option is sent by the client, timestamps in the QUIC ACK frame are sent and processed. QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_send_timestamps, false) -// When true, QuicSpdySession supports draft-ietf-masque-h3-datagram. -QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_h3_datagram, false) // When true, defaults to BBR congestion control instead of Cubic. QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_default_to_bbr, false) // When true, prevents QUIC\'s PacingSender from generating bursts when the congestion controller is CWND limited and not pacing limited.
diff --git a/quic/masque/masque_client_bin.cc b/quic/masque/masque_client_bin.cc index 9203725..bb9964e 100644 --- a/quic/masque/masque_client_bin.cc +++ b/quic/masque/masque_client_bin.cc
@@ -50,8 +50,6 @@ return 1; } - SetQuicReloadableFlag(quic_h3_datagram, true); - const bool disable_certificate_verification = GetQuicFlag(FLAGS_disable_certificate_verification); QuicEpollServer epoll_server;
diff --git a/quic/masque/masque_client_session.h b/quic/masque/masque_client_session.h index e055a76..c32a961 100644 --- a/quic/masque/masque_client_session.h +++ b/quic/masque/masque_client_session.h
@@ -144,6 +144,8 @@ QuicSocketAddress target_server_address_; }; + bool ShouldNegotiateHttp3Datagram() override { return true; } + const ConnectUdpClientState* GetOrCreateConnectUdpClientState( const QuicSocketAddress& target_server_address, EncapsulatedClientSession* encapsulated_client_session);
diff --git a/quic/masque/masque_server_bin.cc b/quic/masque/masque_server_bin.cc index d5a5d9f..aaccda3 100644 --- a/quic/masque/masque_server_bin.cc +++ b/quic/masque/masque_server_bin.cc
@@ -52,8 +52,6 @@ return 0; } - SetQuicReloadableFlag(quic_h3_datagram, true); - quic::MasqueMode masque_mode = quic::MasqueMode::kOpen; std::string mode_string = GetQuicFlag(FLAGS_masque_mode); if (mode_string == "legacy") {
diff --git a/quic/masque/masque_server_session.h b/quic/masque/masque_server_session.h index 14b8293..ebf0d21 100644 --- a/quic/masque/masque_server_session.h +++ b/quic/masque/masque_server_session.h
@@ -129,6 +129,8 @@ MasqueServerSession* masque_session_; // Unowned. }; + bool ShouldNegotiateHttp3Datagram() override { return true; } + MasqueServerBackend* masque_server_backend_; // Unowned. Visitor* owner_; // Unowned. QuicEpollServer* epoll_server_; // Unowned.
diff --git a/quic/test_tools/quic_spdy_session_peer.cc b/quic/test_tools/quic_spdy_session_peer.cc index c547ac2..a27f073 100644 --- a/quic/test_tools/quic_spdy_session_peer.cc +++ b/quic/test_tools/quic_spdy_session_peer.cc
@@ -106,8 +106,13 @@ } // static +bool QuicSpdySessionPeer::ShouldNegotiateHttp3Datagram( + QuicSpdySession* session) { + return session->ShouldNegotiateHttp3Datagram(); +} + +// static void QuicSpdySessionPeer::EnableWebTransport(QuicSpdySession& session) { - SetQuicReloadableFlag(quic_h3_datagram, true); QUICHE_DCHECK(session.WillNegotiateWebTransport()); session.h3_datagram_supported_ = true; session.peer_supports_webtransport_ = true;
diff --git a/quic/test_tools/quic_spdy_session_peer.h b/quic/test_tools/quic_spdy_session_peer.h index 9ba5497..0d06c4d 100644 --- a/quic/test_tools/quic_spdy_session_peer.h +++ b/quic/test_tools/quic_spdy_session_peer.h
@@ -52,6 +52,7 @@ QuicSpdySession* session); static void SetH3DatagramSupported(QuicSpdySession* session, bool h3_datagram_supported); + static bool ShouldNegotiateHttp3Datagram(QuicSpdySession* session); static void EnableWebTransport(QuicSpdySession& session); };
diff --git a/quic/tools/quic_simple_client_session.cc b/quic/tools/quic_simple_client_session.cc index d1efcba..07c4628 100644 --- a/quic/tools/quic_simple_client_session.cc +++ b/quic/tools/quic_simple_client_session.cc
@@ -54,4 +54,8 @@ return enable_web_transport_; } +bool QuicSimpleClientSession::ShouldNegotiateHttp3Datagram() { + return enable_web_transport_; +} + } // namespace quic
diff --git a/quic/tools/quic_simple_client_session.h b/quic/tools/quic_simple_client_session.h index aa86d9a..124e56f 100644 --- a/quic/tools/quic_simple_client_session.h +++ b/quic/tools/quic_simple_client_session.h
@@ -30,6 +30,7 @@ std::unique_ptr<QuicSpdyClientStream> CreateClientStream() override; bool ShouldNegotiateWebTransport() override; + bool ShouldNegotiateHttp3Datagram() override; private: const bool drop_response_body_;