From 0f5c2f763966b3caedbfc8a9eadff49ac9bd3a79 Mon Sep 17 00:00:00 2001 From: Garrett D'Amore Date: Tue, 3 Dec 2024 22:46:48 -0500 Subject: windows ipc: check the return value of nni_aio_schedule This hopefully addresses a long standing bug with Windows IPC sometimes hanging on shut down. --- src/platform/windows/win_ipclisten.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/platform/windows/win_ipclisten.c b/src/platform/windows/win_ipclisten.c index e81f4b46..1f5edd08 100644 --- a/src/platform/windows/win_ipclisten.c +++ b/src/platform/windows/win_ipclisten.c @@ -265,6 +265,7 @@ static void ipc_listener_accept(void *arg, nni_aio *aio) { ipc_listener *l = arg; + int rv; if (nni_aio_begin(aio) != 0) { return; } @@ -274,10 +275,13 @@ ipc_listener_accept(void *arg, nni_aio *aio) nni_aio_finish_error(aio, NNG_ESTATE); return; } - nni_aio_schedule(aio, ipc_accept_cancel, l); - nni_list_append(&l->aios, aio); - if (nni_list_first(&l->aios) == aio) { - ipc_accept_start(l); + if ((rv = nni_aio_schedule(aio, ipc_accept_cancel, l)) != 0) { + nni_aio_finish_error(aio, rv); + } else { + nni_list_append(&l->aios, aio); + if (nni_list_first(&l->aios) == aio) { + ipc_accept_start(l); + } } nni_mtx_unlock(&l->mtx); } -- cgit v1.2.3-70-g09d2