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.