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);
}