summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLiam Staskawicz <liam@stask.net>2018-02-21 22:34:24 -0800
committerGarrett D'Amore <garrett@damore.org>2018-03-02 08:58:27 -0800
commit7f2b2f174a796132b61e2d0cf7aed94f69e24d88 (patch)
tree43666a84cc6845f7a916f01a7bdeb60f70973dac /src
parent7849fd286533560f10eff202f24007ea6b3dd787 (diff)
downloadnng-7f2b2f174a796132b61e2d0cf7aed94f69e24d88.tar.gz
nng-7f2b2f174a796132b61e2d0cf7aed94f69e24d88.tar.bz2
nng-7f2b2f174a796132b61e2d0cf7aed94f69e24d88.zip
ipc: more robust init
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;