From c8ce57d668d73d92a071fa86f81e07ca403d8672 Mon Sep 17 00:00:00 2001 From: Garrett D'Amore Date: Mon, 9 Dec 2024 13:33:11 -0800 Subject: aio: introduce nni_aio_defer This will replace nni_aio_schedule, and it includes finishing the task if needed. It does so without dropping the lock and so is more efficient and race free. This includes some conversion of some subsystems to it. --- src/core/sockfd.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'src/core/sockfd.c') diff --git a/src/core/sockfd.c b/src/core/sockfd.c index 787a0783..1a0e792f 100644 --- a/src/core/sockfd.c +++ b/src/core/sockfd.c @@ -115,7 +115,6 @@ static void sfd_listener_accept(void *arg, nng_aio *aio) { sfd_listener *l = arg; - int rv; if (nni_aio_begin(aio) != 0) { return; @@ -129,9 +128,7 @@ sfd_listener_accept(void *arg, nng_aio *aio) if (l->listen_cnt) { sfd_start_conn(l, aio); - } else if ((rv = nni_aio_schedule(aio, sfd_cancel_accept, l)) != 0) { - nni_aio_finish_error(aio, rv); - } else { + } else if (nni_aio_defer(aio, sfd_cancel_accept, l)) { nni_aio_list_append(&l->accept_q, aio); } nni_mtx_unlock(&l->mtx); -- cgit v1.2.3-70-g09d2