diff options
author | Hugo Landau <hlandau@openssl.org> | 2024-02-02 12:21:11 +0000 |
---|---|---|
committer | Hugo Landau <hlandau@openssl.org> | 2024-02-10 11:37:14 +0000 |
commit | a5d16ac371245bd87e9ec264763a16db7015d59b (patch) | |
tree | 153061d382ed7665befd2486aaacc54d54fcd0cf /ssl | |
parent | ab05f13cedb6cb1f058381676ae28652f7e4534d (diff) |
QUIC QSM: Allow bidi and uni incoming streams to be tracked separately
Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/23495)
Diffstat (limited to 'ssl')
-rw-r--r-- | ssl/quic/quic_stream_map.c | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/ssl/quic/quic_stream_map.c b/ssl/quic/quic_stream_map.c index f8278c9913..89b97c0a6b 100644 --- a/ssl/quic/quic_stream_map.c +++ b/ssl/quic/quic_stream_map.c @@ -103,7 +103,8 @@ int ossl_quic_stream_map_init(QUIC_STREAM_MAP *qsm, qsm->rr_counter = 0; qsm->rr_cur = NULL; - qsm->num_accept = 0; + qsm->num_accept_bidi = 0; + qsm->num_accept_uni = 0; qsm->num_shutdown_flush = 0; qsm->get_stream_limit_cb = get_stream_limit_cb; @@ -737,7 +738,10 @@ void ossl_quic_stream_map_push_accept_queue(QUIC_STREAM_MAP *qsm, QUIC_STREAM *s) { list_insert_tail(&qsm->accept_list, &s->accept_node); - ++qsm->num_accept; + if (ossl_quic_stream_is_bidi(s)) + ++qsm->num_accept_bidi; + else + ++qsm->num_accept_uni; } static QUIC_RXFC *qsm_get_max_streams_rxfc(QUIC_STREAM_MAP *qsm, QUIC_STREAM *s) @@ -754,15 +758,24 @@ void ossl_quic_stream_map_remove_from_accept_queue(QUIC_STREAM_MAP *qsm, QUIC_RXFC *max_streams_rxfc; list_remove(&qsm->accept_list, &s->accept_node); - --qsm->num_accept; + if (ossl_quic_stream_is_bidi(s)) + --qsm->num_accept_bidi; + else + --qsm->num_accept_uni; if ((max_streams_rxfc = qsm_get_max_streams_rxfc(qsm, s)) != NULL) ossl_quic_rxfc_on_retire(max_streams_rxfc, 1, rtt); } -size_t ossl_quic_stream_map_get_accept_queue_len(QUIC_STREAM_MAP *qsm) +size_t ossl_quic_stream_map_get_accept_queue_len(QUIC_STREAM_MAP *qsm, int is_uni) +{ + return is_uni ? qsm->num_accept_uni : qsm->num_accept_bidi; +} + +size_t ossl_quic_stream_map_get_total_accept_queue_len(QUIC_STREAM_MAP *qsm) { - return qsm->num_accept; + return ossl_quic_stream_map_get_accept_queue_len(qsm, /*is_uni=*/0) + + ossl_quic_stream_map_get_accept_queue_len(qsm, /*is_uni=*/1); } void ossl_quic_stream_map_gc(QUIC_STREAM_MAP *qsm) |