From 9387bd4c25cf37613bcecc173e63f93327eb47ec Mon Sep 17 00:00:00 2001 From: Hugo Landau Date: Fri, 2 Feb 2024 12:30:41 +0000 Subject: QUIC POLLING: Implement autotick Reviewed-by: Neil Horman Reviewed-by: Tomas Mraz (Merged from https://github.com/openssl/openssl/pull/23495) --- ssl/quic/quic_impl.c | 6 +++++- ssl/rio/poll_immediate.c | 10 +--------- 2 files changed, 6 insertions(+), 10 deletions(-) (limited to 'ssl') diff --git a/ssl/quic/quic_impl.c b/ssl/quic/quic_impl.c index 42e7b085e7..d0dc04bb37 100644 --- a/ssl/quic/quic_impl.c +++ b/ssl/quic/quic_impl.c @@ -3921,7 +3921,8 @@ static int test_poll_event_os(QUIC_CONNECTION *qc, int is_uni) } QUIC_TAKES_LOCK -int ossl_quic_conn_poll_events(SSL *ssl, uint64_t events, uint64_t *p_revents) +int ossl_quic_conn_poll_events(SSL *ssl, uint64_t events, int do_tick, + uint64_t *p_revents) { QCTX ctx; uint64_t revents = 0; @@ -3931,6 +3932,9 @@ int ossl_quic_conn_poll_events(SSL *ssl, uint64_t events, uint64_t *p_revents) quic_lock(ctx.qc); + if (do_tick) + ossl_quic_reactor_tick(ossl_quic_channel_get_reactor(ctx.qc->ch), 0); + if (ctx.xso != NULL) { /* SSL object has a stream component. */ diff --git a/ssl/rio/poll_immediate.c b/ssl/rio/poll_immediate.c index 7de211742a..d4fd62ad95 100644 --- a/ssl/rio/poll_immediate.c +++ b/ssl/rio/poll_immediate.c @@ -61,13 +61,6 @@ int SSL_poll(SSL_POLL_ITEM *items, FAIL_FROM(0); } - if (do_tick) { - ERR_raise_data(ERR_LIB_SSL, SSL_R_POLL_REQUEST_NOT_SUPPORTED, - "SSL_poll does not currently support implicit I/O " - "processing"); - FAIL_FROM(0); - } - /* Trivial case. */ if (num_items == 0) goto out; @@ -88,7 +81,7 @@ int SSL_poll(SSL_POLL_ITEM *items, switch (ssl->type) { case SSL_TYPE_QUIC_CONNECTION: case SSL_TYPE_QUIC_XSO: - if (!ossl_quic_conn_poll_events(ssl, events, &revents)) + if (!ossl_quic_conn_poll_events(ssl, events, do_tick, &revents)) /* above call raises ERR */ FAIL_ITEM(i); @@ -121,7 +114,6 @@ int SSL_poll(SSL_POLL_ITEM *items, /* TODO(QUIC POLLING): Blocking mode */ /* TODO(QUIC POLLING): Support for polling FDs */ - /* TODO(QUIC POLLING): Support for autotick */ out: if (p_result_count != NULL) -- cgit v1.2.3