Lines Matching +full:rx +full:- +full:inactive
2 * Copyright 2022-2025 The OpenSSL Project Authors. All Rights Reserved.
40 * -----------------------
49 * don't have a QUIC_SSTREAM on a receive-only stream.
51 #define QUIC_SSTREAM_STATE_NONE 0 /* --- sstream == NULL */
53 #define QUIC_SSTREAM_STATE_SEND 2 /* |-- sstream != NULL */
56 #define QUIC_SSTREAM_STATE_RESET_SENT 5 /* |-- sstream == NULL */
61 * --------------------------
70 * don't need a QUIC_RSTREAM on a send-only stream.
72 #define QUIC_RSTREAM_STATE_NONE 0 /* --- rstream == NULL */
74 #define QUIC_RSTREAM_STATE_SIZE_KNOWN 2 /* |-- rstream != NULL */
77 #define QUIC_RSTREAM_STATE_RESET_RECVD 5 /* |-- rstream == NULL */
82 QUIC_STREAM_LIST_NODE accept_node; /* accept queue of remotely-created streams */
90 * version-specific property and may change between QUIC versions; instead,
129 * For the receive part, the final size is tracked by the stream-level RXFC;
147 * non-existence of a QUIC_SSTREAM or QUIC_RSTREAM object does not
151 QUIC_SSTREAM *sstream; /* NULL if RX-only */
154 /* Stream-level flow control managers. */
155 QUIC_TXFC txfc; /* NULL if RX-only */
156 QUIC_RXFC rxfc; /* NULL if TX-only */
209 * - A QUIC_STREAM cannot be deleted until it is neither in the accept
213 * - Once this is the case (i.e., no user-facing API object exposing the
223 * RX Obligations:
227 * locally-initiated stream ID we have not created yet,
240 * RX Obligations:
257 * RX Obligations:
272 * RX Obligations:
282 * - either:
283 * - the peer has acknowledged receipt of a STOP_SENDING frame sent
284 * by us; -or-
285 * - we have received a FIN and all preceding segments from the peer
289 * retransmissions we might subsequently receive non-FIN segments
305 * - we have drained our send stream (for a finished send stream)
335 return (s->type & QUIC_STREAM_INITIATOR_MASK) == QUIC_STREAM_INITIATOR_SERVER; in ossl_quic_stream_is_server_init()
343 return (s->type & QUIC_STREAM_DIR_MASK) == QUIC_STREAM_DIR_BIDI; in ossl_quic_stream_is_bidi()
349 return ossl_quic_stream_is_server_init(s) == s->as_server; in ossl_quic_stream_is_local_init()
355 * Do NOT use (s->sstream != NULL) to test this; use this function. Note that
356 * even if this function returns 1, s->sstream might be NULL if the QUIC_SSTREAM
361 return s->send_state != QUIC_SSTREAM_STATE_NONE; in ossl_quic_stream_has_send()
367 * Do NOT use (s->rstream != NULL) to test this; use this function. Note that
368 * even if this function returns 1, s->rstream might be NULL if the QUIC_RSTREAM
374 return s->recv_state != QUIC_RSTREAM_STATE_NONE; in ossl_quic_stream_has_recv()
379 * it. If this returns 1, s->sstream is guaranteed to be non-NULL. The converse
396 switch (s->send_state) { in ossl_quic_stream_has_send_buffer()
412 return s->send_state == QUIC_SSTREAM_STATE_RESET_SENT in ossl_quic_stream_send_is_reset()
413 || s->send_state == QUIC_SSTREAM_STATE_RESET_RECVD; in ossl_quic_stream_send_is_reset()
418 * with it. If this returns 1, s->rstream is guaranteed to be non-NULL. The
429 switch (s->recv_state) { in ossl_quic_stream_has_recv_buffer()
445 return s->recv_state == QUIC_RSTREAM_STATE_RESET_RECVD in ossl_quic_stream_recv_is_reset()
446 || s->recv_state == QUIC_RSTREAM_STATE_RESET_READ; in ossl_quic_stream_recv_is_reset()
452 * If final_size is non-NULL, *final_size is the final size (on success) or an
458 switch (s->send_state) { in ossl_quic_stream_send_get_final_size()
464 * SEND may or may not have had a FIN - even if we have a FIN we do not in ossl_quic_stream_send_get_final_size()
468 return ossl_quic_sstream_get_final_size(s->sstream, final_size); in ossl_quic_stream_send_get_final_size()
474 *final_size = s->send_final_size; in ossl_quic_stream_send_get_final_size()
482 * If final_size is non-NULL, *final_size is the final size (on success) or an
488 switch (s->recv_state) { in ossl_quic_stream_recv_get_final_size()
500 if (!ossl_assert(ossl_quic_rxfc_get_final_size(&s->rxfc, final_size))) in ossl_quic_stream_recv_get_final_size()
517 switch (s->recv_state) { in ossl_quic_stream_recv_pending()
526 if (!ossl_quic_rstream_available(s->rstream, &avail, &fin)) in ossl_quic_stream_recv_pending()
549 * - maps stream IDs to QUIC_STREAM objects;
550 * - tracks which streams are 'active' (currently have data for transmission);
551 * - allows iteration over the active streams only.
572 * peer-initiated streams. If a stream's stream ID is x, a stream is allowed if
575 * If uni is 1, get the limit for locally-initiated unidirectional streams, else
576 * get the limit for locally-initiated bidirectional streams.
598 * server-initiated streams as they will need to allocate a QUIC_STREAM
629 * Marks the given stream as active or inactive based on its state. Idempotent.
632 * and when a stream is marked inactive, it no longer appears in the iteration
670 * STREAM_DATA_BLOCKED) frame transmission for locally-initiated streams.
882 * Allows the current set of active streams to be walked using a RR-based
903 * advance_rr is 1). After calling this, it->stream will be the first stream in
912 * list is reached, it->stream will be NULL after calling this.