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())) {}