Guard HTTP/3 priority code behind protocol flag quic_allow_http3_priority which is default false. gfe-relnote: v99 only, not protected. PiperOrigin-RevId: 269610032 Change-Id: Ie15cca2d45ab4821e253cec1f34e6e513fde5165
diff --git a/quic/core/http/quic_receive_control_stream.cc b/quic/core/http/quic_receive_control_stream.cc index d6794c7..86005e7 100644 --- a/quic/core/http/quic_receive_control_stream.cc +++ b/quic/core/http/quic_receive_control_stream.cc
@@ -7,6 +7,7 @@ #include "net/third_party/quiche/src/quic/core/http/http_constants.h" #include "net/third_party/quiche/src/quic/core/http/http_decoder.h" #include "net/third_party/quiche/src/quic/core/http/quic_spdy_session.h" +#include "net/third_party/quiche/src/quic/platform/api/quic_flags.h" #include "net/third_party/quiche/src/quic/platform/api/quic_ptr_util.h" namespace quic { @@ -231,6 +232,9 @@ bool QuicReceiveControlStream::OnPriorityFrame(const PriorityFrame& priority) { DCHECK_EQ(Perspective::IS_SERVER, session()->perspective()); + if (!GetQuicFlag(FLAGS_quic_allow_http3_priority)) { + return true; + } QuicStream* stream = session()->GetOrCreateStream(priority.prioritized_element_id); // It's possible that the client sends a Priority frame for a request stream
diff --git a/quic/core/http/quic_receive_control_stream_test.cc b/quic/core/http/quic_receive_control_stream_test.cc index e305102..5eeb466 100644 --- a/quic/core/http/quic_receive_control_stream_test.cc +++ b/quic/core/http/quic_receive_control_stream_test.cc
@@ -216,6 +216,7 @@ if (perspective() == Perspective::IS_CLIENT) { return; } + SetQuicFlag(FLAGS_quic_allow_http3_priority, true); struct PriorityFrame frame; frame.prioritized_type = REQUEST_STREAM; frame.dependency_type = ROOT_OF_TREE;
diff --git a/quic/core/http/quic_spdy_session.cc b/quic/core/http/quic_spdy_session.cc index 17c2884..abeed2b 100644 --- a/quic/core/http/quic_spdy_session.cc +++ b/quic/core/http/quic_spdy_session.cc
@@ -524,6 +524,7 @@ void QuicSpdySession::WriteH3Priority(const PriorityFrame& priority) { DCHECK(VersionHasStreamType(transport_version())); + DCHECK(GetQuicFlag(FLAGS_quic_allow_http3_priority)); DCHECK(perspective() == Perspective::IS_CLIENT) << "Server must not send priority";
diff --git a/quic/core/http/quic_spdy_stream.cc b/quic/core/http/quic_spdy_stream.cc index e702e85..a407d5c 100644 --- a/quic/core/http/quic_spdy_stream.cc +++ b/quic/core/http/quic_spdy_stream.cc
@@ -1002,7 +1002,8 @@ std::move(ack_listener)); } - if (session()->perspective() == Perspective::IS_CLIENT && !priority_sent_) { + if (GetQuicFlag(FLAGS_quic_allow_http3_priority) && + session()->perspective() == Perspective::IS_CLIENT && !priority_sent_) { PriorityFrame frame; PopulatePriorityFrame(&frame); spdy_session_->WriteH3Priority(frame);
diff --git a/quic/core/http/quic_spdy_stream_test.cc b/quic/core/http/quic_spdy_stream_test.cc index 5db0263..b1f6672 100644 --- a/quic/core/http/quic_spdy_stream_test.cc +++ b/quic/core/http/quic_spdy_stream_test.cc
@@ -1221,6 +1221,7 @@ } TEST_P(QuicSpdyStreamTest, ClientWritesPriority) { + SetQuicFlag(FLAGS_quic_allow_http3_priority, true); InitializeWithPerspective(kShouldProcessData, Perspective::IS_CLIENT); if (VersionUsesQpack(GetParam().transport_version)) {