Do not call OnCanCreateNewOutgoingStream() from QuicSession::StreamDraining for IETF QUIC versions. Only receiving a MAX_STREAMS frame can allow a new stream to be created. PiperOrigin-RevId: 404706361
diff --git a/quic/core/quic_session.cc b/quic/core/quic_session.cc index e267737..dc0e8f5 100644 --- a/quic/core/quic_session.cc +++ b/quic/core/quic_session.cc
@@ -1939,7 +1939,9 @@ ++num_draining_streams_; if (!IsIncomingStream(stream_id)) { ++num_outgoing_draining_streams_; - OnCanCreateNewOutgoingStream(unidirectional); + if (!VersionHasIetfQuicFrames(transport_version())) { + OnCanCreateNewOutgoingStream(unidirectional); + } } }
diff --git a/quic/core/quic_session_test.cc b/quic/core/quic_session_test.cc index b2f6274..f55ac6e 100644 --- a/quic/core/quic_session_test.cc +++ b/quic/core/quic_session_test.cc
@@ -1803,7 +1803,9 @@ QuicStreamId stream_id = stream->id(); QuicStreamFrame data1(stream_id, true, 0, absl::string_view("HT")); session_.OnStreamFrame(data1); - EXPECT_CALL(session_, OnCanCreateNewOutgoingStream(false)).Times(1); + if (!VersionHasIetfQuicFrames(transport_version())) { + EXPECT_CALL(session_, OnCanCreateNewOutgoingStream(false)).Times(1); + } session_.StreamDraining(stream_id, /*unidirectional=*/false); }