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
}
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;
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. */
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;
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);
/* TODO(QUIC POLLING): Blocking mode */
/* TODO(QUIC POLLING): Support for polling FDs */
- /* TODO(QUIC POLLING): Support for autotick */
out:
if (p_result_count != NULL)