From d12e169c1e733b255d146847ed57037b74681285 Mon Sep 17 00:00:00 2001 From: Garrett D'Amore Date: Sat, 19 Dec 2020 10:21:54 -0800 Subject: fixes #1372 nni_reap could be smaller --- src/core/socket.c | 44 ++++++++++++++++++++++++++++++++++++-------- 1 file changed, 36 insertions(+), 8 deletions(-) (limited to 'src/core/socket.c') diff --git a/src/core/socket.c b/src/core/socket.c index f741b6f0..82267287 100644 --- a/src/core/socket.c +++ b/src/core/socket.c @@ -1581,10 +1581,18 @@ nni_dialer_shutdown(nni_dialer *d) nni_mtx_unlock(&s->s_mx); } -void -nni_dialer_reap(nni_dialer *d) +static void dialer_reap(void *); + +static nni_reap_list dialer_reap_list = { + .rl_offset = offsetof(nni_dialer, d_reap), + .rl_func = dialer_reap, +}; + +static void +dialer_reap(void *arg) { - nni_sock *s = d->d_sock; + nni_dialer *d = arg; + nni_sock * s = d->d_sock; nni_aio_stop(&d->d_tmo_aio); nni_aio_stop(&d->d_con_aio); @@ -1602,7 +1610,7 @@ nni_dialer_reap(nni_dialer *d) } nni_mtx_unlock(&s->s_mx); // Go back to the end of reap list. - nni_reap(&d->d_reap, (nni_cb) nni_dialer_reap, d); + nni_dialer_reap(d); return; } @@ -1616,6 +1624,12 @@ nni_dialer_reap(nni_dialer *d) nni_dialer_destroy(d); } +void +nni_dialer_reap(nni_dialer *d) +{ + nni_reap(&dialer_reap_list, d); +} + void nni_listener_add_pipe(nni_listener *l, void *tpipe) { @@ -1703,10 +1717,18 @@ nni_listener_shutdown(nni_listener *l) nni_mtx_unlock(&s->s_mx); } -void -nni_listener_reap(nni_listener *l) +static void listener_reap(void *); + +static nni_reap_list listener_reap_list = { + .rl_offset = offsetof(nni_listener, l_reap), + .rl_func = listener_reap, +}; + +static void +listener_reap(void *arg) { - nni_sock *s = l->l_sock; + nni_listener *l = arg; + nni_sock * s = l->l_sock; nni_aio_stop(&l->l_tmo_aio); nni_aio_stop(&l->l_acc_aio); @@ -1724,7 +1746,7 @@ nni_listener_reap(nni_listener *l) } nni_mtx_unlock(&s->s_mx); // Go back to the end of reap list. - nni_reap(&l->l_reap, (nni_cb) nni_listener_reap, l); + nni_reap(&listener_reap_list, l); return; } @@ -1738,6 +1760,12 @@ nni_listener_reap(nni_listener *l) nni_listener_destroy(l); } +void +nni_listener_reap(nni_listener *l) +{ + nni_reap(&listener_reap_list, l); +} + void nni_pipe_run_cb(nni_pipe *p, nng_pipe_ev ev) { -- cgit v1.2.3-70-g09d2