Skip to content

Commit

Permalink
QUIC POLLING: Implement autotick
Browse files Browse the repository at this point in the history
Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from #23495)
  • Loading branch information
hlandau committed Feb 10, 2024
1 parent f945986 commit 9387bd4
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 11 deletions.
3 changes: 2 additions & 1 deletion include/internal/quic_ssl.h
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,8 @@ int ossl_quic_get_shutdown(const SSL *s);
int ossl_quic_set_diag_title(SSL_CTX *ctx, const char *title);

/* APIs used by the polling infrastructure */
int ossl_quic_conn_poll_events(SSL *ssl, uint64_t events, uint64_t *revents);
int ossl_quic_conn_poll_events(SSL *ssl, uint64_t events, int do_tick,
uint64_t *revents);

# endif

Expand Down
6 changes: 5 additions & 1 deletion ssl/quic/quic_impl.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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. */

Expand Down
10 changes: 1 addition & 9 deletions ssl/rio/poll_immediate.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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);

Expand Down Expand Up @@ -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)
Expand Down

0 comments on commit 9387bd4

Please sign in to comment.