Add QUIC_BUG_IF to QuicUtils::GetCryptoStreamId
In QUIC versions that use CRYPTO frames (instead of stream 1 frames) for
the crypto handshake, the concept of a "crypto stream ID" makes no
sense, so QuicUtils::GetCryptoStreamId should hit a QUIC_BUG_IF to
prevent its misuse.
gfe-relnote: Add QUIC_BUG_IF protected behind QuicVersionUsesCryptoFrames
PiperOrigin-RevId: 248463613
Change-Id: If6768658e9ffc058778b53a91f95839826602fbf
diff --git a/quic/core/legacy_quic_stream_id_manager.cc b/quic/core/legacy_quic_stream_id_manager.cc
index 6fb662a..447f16d 100644
--- a/quic/core/legacy_quic_stream_id_manager.cc
+++ b/quic/core/legacy_quic_stream_id_manager.cc
@@ -19,14 +19,18 @@
: session_(session),
max_open_outgoing_streams_(max_open_outgoing_streams),
max_open_incoming_streams_(max_open_incoming_streams),
- next_outgoing_stream_id_(
- QuicUtils::GetCryptoStreamId(
- session->connection()->transport_version()) +
- (session->perspective() == Perspective::IS_SERVER ? 1 : 2)),
+ next_outgoing_stream_id_(QuicUtils::GetFirstBidirectionalStreamId(
+ session->connection()->transport_version(),
+ session->perspective())),
largest_peer_created_stream_id_(
session->perspective() == Perspective::IS_SERVER
- ? QuicUtils::GetCryptoStreamId(
- session->connection()->transport_version())
+ ? (QuicVersionUsesCryptoFrames(
+ session->connection()->transport_version())
+ ? QuicUtils::GetFirstBidirectionalStreamId(
+ session->connection()->transport_version(),
+ Perspective::IS_CLIENT)
+ : QuicUtils::GetCryptoStreamId(
+ session->connection()->transport_version()))
: QuicUtils::GetInvalidStreamId(
session->connection()->transport_version())) {}