Support local vs remote flow control with TLS, and fix initial limits
This CL fixes a bug found during interop testing where we were failing to communicate with clients that do not send initial_max_stream_data_bidi_local. (When sent by clients, this is the transport parameter that governs the server-initiated streams which are not used by HTTP/3.) All of our tests sent the same value for _local and _remote so we did not notice that we had them backwards. This CL fixes the issue and adds tests to prevent regressions. This CL also fixes an issue where the initial limits were incorrectly set for versions that AllowsLowFlowControlLimits().
gfe-relnote: change QUIC flow control transport parameters, protected by disabled TLS flag.
PiperOrigin-RevId: 273843552
Change-Id: Id8bb3a59029ee9442ebf163fd658f38c47024950
diff --git a/quic/core/quic_utils.h b/quic/core/quic_utils.h
index 25ab7bb..f04dace 100644
--- a/quic/core/quic_utils.h
+++ b/quic/core/quic_utils.h
@@ -133,6 +133,12 @@
static bool IsServerInitiatedStreamId(QuicTransportVersion version,
QuicStreamId id);
+ // Returns true if the stream ID represents a stream initiated by the
+ // provided perspective.
+ static bool IsOutgoingStreamId(ParsedQuicVersion version,
+ QuicStreamId id,
+ Perspective perspective);
+
// Returns true if |id| is considered as bidirectional stream ID. Only used in
// v99.
static bool IsBidirectionalStreamId(QuicStreamId id);