summaryrefslogtreecommitdiffstats
path: root/ssl
diff options
context:
space:
mode:
authorHugo Landau <hlandau@openssl.org>2023-08-09 17:46:32 +0100
committerHugo Landau <hlandau@openssl.org>2023-09-01 10:45:34 +0100
commit0b8b75e242e95db034e8026f462a799c0dafaefc (patch)
tree8919bce4ceecff37a60db6ff9cda31a364fd17a7 /ssl
parent0818c17007bbda000e9c6329a1104d09cc614517 (diff)
QUIC REACTOR: Move can-poll flags into reactor
Reviewed-by: Tomas Mraz <tomas@openssl.org> Reviewed-by: Matt Caswell <matt@openssl.org> (Merged from https://github.com/openssl/openssl/pull/21715)
Diffstat (limited to 'ssl')
-rw-r--r--ssl/quic/quic_reactor.c38
1 files changed, 34 insertions, 4 deletions
diff --git a/ssl/quic/quic_reactor.c b/ssl/quic/quic_reactor.c
index f89337b38e..9aea218d27 100644
--- a/ssl/quic/quic_reactor.c
+++ b/ssl/quic/quic_reactor.c
@@ -24,6 +24,8 @@ void ossl_quic_reactor_init(QUIC_REACTOR *rtor,
rtor->poll_w.type = BIO_POLL_DESCRIPTOR_TYPE_NONE;
rtor->net_read_desired = 0;
rtor->net_write_desired = 0;
+ rtor->can_poll_r = 0;
+ rtor->can_poll_w = 0;
rtor->tick_deadline = initial_tick_deadline;
rtor->tick_cb = tick_cb;
@@ -32,24 +34,52 @@ void ossl_quic_reactor_init(QUIC_REACTOR *rtor,
void ossl_quic_reactor_set_poll_r(QUIC_REACTOR *rtor, const BIO_POLL_DESCRIPTOR *r)
{
- rtor->poll_r = *r;
+ if (r == NULL)
+ rtor->poll_r.type = BIO_POLL_DESCRIPTOR_TYPE_NONE;
+ else
+ rtor->poll_r = *r;
+
+ rtor->can_poll_r
+ = ossl_quic_reactor_can_support_poll_descriptor(rtor, &rtor->poll_r);
}
void ossl_quic_reactor_set_poll_w(QUIC_REACTOR *rtor, const BIO_POLL_DESCRIPTOR *w)
{
- rtor->poll_w = *w;
+ if (w == NULL)
+ rtor->poll_w.type = BIO_POLL_DESCRIPTOR_TYPE_NONE;
+ else
+ rtor->poll_w = *w;
+
+ rtor->can_poll_w
+ = ossl_quic_reactor_can_support_poll_descriptor(rtor, &rtor->poll_w);
}
-const BIO_POLL_DESCRIPTOR *ossl_quic_reactor_get_poll_r(QUIC_REACTOR *rtor)
+const BIO_POLL_DESCRIPTOR *ossl_quic_reactor_get_poll_r(const QUIC_REACTOR *rtor)
{
return &rtor->poll_r;
}
-const BIO_POLL_DESCRIPTOR *ossl_quic_reactor_get_poll_w(QUIC_REACTOR *rtor)
+const BIO_POLL_DESCRIPTOR *ossl_quic_reactor_get_poll_w(const QUIC_REACTOR *rtor)
{
return &rtor->poll_w;
}
+int ossl_quic_reactor_can_support_poll_descriptor(const QUIC_REACTOR *rtor,
+ const BIO_POLL_DESCRIPTOR *d)
+{
+ return d->type == BIO_POLL_DESCRIPTOR_TYPE_SOCK_FD;
+}
+
+int ossl_quic_reactor_can_poll_r(const QUIC_REACTOR *rtor)
+{
+ return rtor->can_poll_r;
+}
+
+int ossl_quic_reactor_can_poll_w(const QUIC_REACTOR *rtor)
+{
+ return rtor->can_poll_w;
+}
+
int ossl_quic_reactor_net_read_desired(QUIC_REACTOR *rtor)
{
return rtor->net_read_desired;