Do not enforce push promise arrive in order in http3. client side only, not protected. PiperOrigin-RevId: 323047790 Change-Id: Ie79628db689ab7b09898da79e23607981604699d
diff --git a/quic/core/http/quic_spdy_client_session_base.cc b/quic/core/http/quic_spdy_client_session_base.cc index 9bd7695..46305a6 100644 --- a/quic/core/http/quic_spdy_client_session_base.cc +++ b/quic/core/http/quic_spdy_client_session_base.cc
@@ -65,7 +65,10 @@ ConnectionCloseBehavior::SEND_CONNECTION_CLOSE_PACKET); return; } - if (promised_stream_id != + // In HTTP3, push promises are received on individual streams, so they could + // be arrive out of order. + if (!VersionUsesHttp3(transport_version()) && + promised_stream_id != QuicUtils::GetInvalidStreamId(transport_version()) && largest_promised_stream_id_ != QuicUtils::GetInvalidStreamId(transport_version()) &&
diff --git a/quic/core/http/quic_spdy_client_session_test.cc b/quic/core/http/quic_spdy_client_session_test.cc index 2500c97..1c0f868 100644 --- a/quic/core/http/quic_spdy_client_session_test.cc +++ b/quic/core/http/quic_spdy_client_session_test.cc
@@ -677,11 +677,13 @@ QuicHeaderList()); associated_stream_id_ += QuicUtils::StreamIdDelta(connection_->transport_version()); - EXPECT_CALL(*connection_, - CloseConnection(QUIC_INVALID_STREAM_ID, - "Received push stream id lesser or equal to the" - " last accepted before", - _)); + if (!VersionUsesHttp3(session_->transport_version())) { + EXPECT_CALL(*connection_, + CloseConnection(QUIC_INVALID_STREAM_ID, + "Received push stream id lesser or equal to the" + " last accepted before", + _)); + } session_->OnPromiseHeaderList(associated_stream_id_, promised_stream_id_, 0, QuicHeaderList()); }