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)) {