Deprecate --gfe2_reloadable_flag_quic_priority_update_structured_headers_parser.
PiperOrigin-RevId: 505846370
diff --git a/quiche/quic/core/http/quic_receive_control_stream.cc b/quiche/quic/core/http/quic_receive_control_stream.cc
index b23fc57..c3862be 100644
--- a/quiche/quic/core/http/quic_receive_control_stream.cc
+++ b/quiche/quic/core/http/quic_receive_control_stream.cc
@@ -137,56 +137,17 @@
spdy_session()->debug_visitor()->OnPriorityUpdateFrameReceived(frame);
}
- if (GetQuicReloadableFlag(quic_priority_update_structured_headers_parser)) {
- QUIC_RELOADABLE_FLAG_COUNT(quic_priority_update_structured_headers_parser);
- absl::optional<QuicStreamPriority> priority =
- ParsePriorityFieldValue(frame.priority_field_value);
+ absl::optional<QuicStreamPriority> priority =
+ ParsePriorityFieldValue(frame.priority_field_value);
- if (!priority.has_value()) {
- stream_delegate()->OnStreamError(
- QUIC_INVALID_PRIORITY_UPDATE,
- "Invalid PRIORITY_UPDATE frame payload.");
- return false;
- }
-
- const QuicStreamId stream_id = frame.prioritized_element_id;
- return spdy_session_->OnPriorityUpdateForRequestStream(stream_id,
- *priority);
+ if (!priority.has_value()) {
+ stream_delegate()->OnStreamError(QUIC_INVALID_PRIORITY_UPDATE,
+ "Invalid PRIORITY_UPDATE frame payload.");
+ return false;
}
- for (absl::string_view key_value :
- absl::StrSplit(frame.priority_field_value, ',')) {
- std::vector<absl::string_view> key_and_value =
- absl::StrSplit(key_value, '=');
- if (key_and_value.size() != 2) {
- continue;
- }
-
- absl::string_view key = key_and_value[0];
- quiche::QuicheTextUtils::RemoveLeadingAndTrailingWhitespace(&key);
- if (key != "u") {
- continue;
- }
-
- absl::string_view value = key_and_value[1];
- int urgency;
- // This violates RFC9218 Section 4: "priority parameters with out-of-range
- // values, or values of unexpected types MUST be ignored".
- if (!absl::SimpleAtoi(value, &urgency) || urgency < 0 || urgency > 7) {
- stream_delegate()->OnStreamError(
- QUIC_INVALID_PRIORITY_UPDATE,
- "Invalid value for PRIORITY_UPDATE urgency parameter.");
- return false;
- }
-
- return spdy_session_->OnPriorityUpdateForRequestStream(
- frame.prioritized_element_id,
- QuicStreamPriority{static_cast<uint8_t>(urgency),
- QuicStreamPriority::kDefaultIncremental});
- }
-
- // Ignore frame if no urgency parameter can be parsed.
- return true;
+ const QuicStreamId stream_id = frame.prioritized_element_id;
+ return spdy_session_->OnPriorityUpdateForRequestStream(stream_id, *priority);
}
bool QuicReceiveControlStream::OnAcceptChFrameStart(
diff --git a/quiche/quic/core/http/quic_spdy_session_test.cc b/quiche/quic/core/http/quic_spdy_session_test.cc
index 550ba80..4c23b9e 100644
--- a/quiche/quic/core/http/quic_spdy_session_test.cc
+++ b/quiche/quic/core/http/quic_spdy_session_test.cc
@@ -2246,11 +2246,7 @@
session_.OnStreamFrame(stream_frame3);
// Priority is applied upon stream construction.
TestStream* stream2 = session_.CreateIncomingStream(stream_id2);
- if (GetQuicReloadableFlag(quic_priority_update_structured_headers_parser)) {
- EXPECT_EQ((QuicStreamPriority{5u, true}), stream2->priority());
- } else {
- EXPECT_EQ((QuicStreamPriority{5u, false}), stream2->priority());
- }
+ EXPECT_EQ((QuicStreamPriority{5u, true}), stream2->priority());
}
TEST_P(QuicSpdySessionTestServer, OnInvalidPriorityUpdateFrame) {
@@ -2289,13 +2285,9 @@
PriorityUpdateFrame priority_update{stream_id, "00"};
EXPECT_CALL(debug_visitor, OnPriorityUpdateFrameReceived(priority_update));
- if (GetQuicReloadableFlag(quic_priority_update_structured_headers_parser)) {
- EXPECT_CALL(*connection_,
- CloseConnection(QUIC_INVALID_PRIORITY_UPDATE,
- "Invalid PRIORITY_UPDATE frame payload.", _));
- } else {
- EXPECT_CALL(*connection_, CloseConnection(_, _, _)).Times(0);
- }
+ EXPECT_CALL(*connection_,
+ CloseConnection(QUIC_INVALID_PRIORITY_UPDATE,
+ "Invalid PRIORITY_UPDATE frame payload.", _));
std::string serialized_priority_update =
HttpEncoder::SerializePriorityUpdateFrame(priority_update);
@@ -2339,14 +2331,7 @@
PriorityUpdateFrame priority_update{stream_id, "u=9"};
EXPECT_CALL(debug_visitor, OnPriorityUpdateFrameReceived(priority_update));
- if (GetQuicReloadableFlag(quic_priority_update_structured_headers_parser)) {
- EXPECT_CALL(*connection_, CloseConnection(_, _, _)).Times(0);
- } else {
- EXPECT_CALL(*connection_,
- CloseConnection(
- QUIC_INVALID_PRIORITY_UPDATE,
- "Invalid value for PRIORITY_UPDATE urgency parameter.", _));
- }
+ EXPECT_CALL(*connection_, CloseConnection(_, _, _)).Times(0);
std::string serialized_priority_update =
HttpEncoder::SerializePriorityUpdateFrame(priority_update);
diff --git a/quiche/quic/core/quic_flags_list.h b/quiche/quic/core/quic_flags_list.h
index d9333b2..ee67f58 100644
--- a/quiche/quic/core/quic_flags_list.h
+++ b/quiche/quic/core/quic_flags_list.h
@@ -77,8 +77,6 @@
QUIC_FLAG(quic_reloadable_flag_quic_connection_migration_use_new_cid_v2, true)
// If true, use next_connection_id_sequence_number to validate retired cid number.
QUIC_FLAG(quic_reloadable_flag_quic_check_retire_cid_with_next_cid_sequence_number, true)
-// If true, use quiche/common/structured_headers in QuicReceiveControlStream::OnPriorityUpdateFrame().
-QUIC_FLAG(quic_reloadable_flag_quic_priority_update_structured_headers_parser, true)
// If true, uses conservative cwnd gain and pacing gain when cwnd gets bootstrapped.
QUIC_FLAG(quic_reloadable_flag_quic_conservative_cwnd_and_pacing_gains, false)
// If true, when TicketCrypter fails to encrypt a session ticket, quic::TlsServerHandshaker will send a placeholder ticket, instead of an empty one, to the client.