aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/transport/ipc/ipc.c12
1 files changed, 7 insertions, 5 deletions
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;