From 7f2b2f174a796132b61e2d0cf7aed94f69e24d88 Mon Sep 17 00:00:00 2001 From: Liam Staskawicz Date: Wed, 21 Feb 2018 22:34:24 -0800 Subject: ipc: more robust init --- src/transport/ipc/ipc.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/transport/ipc/ipc.c b/src/transport/ipc/ipc.c index 9ebf3145..41498ca3 100644 --- a/src/transport/ipc/ipc.c +++ b/src/transport/ipc/ipc.c @@ -522,23 +522,25 @@ nni_ipc_ep_init(void **epp, nni_url *url, nni_sock *sock, int mode) if ((ep = NNI_ALLOC_STRUCT(ep)) == NULL) { return (NNG_ENOMEM); } + nni_mtx_init(&ep->mtx); sz = sizeof(ep->sa.s_un.s_path.sa_path); ep->sa.s_un.s_path.sa_family = NNG_AF_IPC; if (nni_strlcpy(ep->sa.s_un.s_path.sa_path, url->u_path, sz) >= sz) { - NNI_FREE_STRUCT(ep); + nni_ipc_ep_fini(ep); return (NNG_EADDRINVAL); } if ((rv = nni_plat_ipc_ep_init(&ep->iep, &ep->sa, mode)) != 0) { - NNI_FREE_STRUCT(ep); + nni_ipc_ep_fini(ep); return (rv); } - nni_mtx_init(&ep->mtx); - nni_aio_init(&ep->aio, nni_ipc_ep_cb, ep); - + if ((rv = nni_aio_init(&ep->aio, nni_ipc_ep_cb, ep)) != 0) { + nni_ipc_ep_fini(ep); + return (rv); + } ep->proto = nni_sock_proto(sock); *epp = ep; -- cgit v1.2.3-70-g09d2