diff options
| author | Liam Staskawicz <liam@stask.net> | 2018-02-21 22:34:24 -0800 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2018-03-02 08:58:27 -0800 |
| commit | 7f2b2f174a796132b61e2d0cf7aed94f69e24d88 (patch) | |
| tree | 43666a84cc6845f7a916f01a7bdeb60f70973dac /src/transport/ipc | |
| parent | 7849fd286533560f10eff202f24007ea6b3dd787 (diff) | |
| download | nng-7f2b2f174a796132b61e2d0cf7aed94f69e24d88.tar.gz nng-7f2b2f174a796132b61e2d0cf7aed94f69e24d88.tar.bz2 nng-7f2b2f174a796132b61e2d0cf7aed94f69e24d88.zip | |
ipc: more robust init
Diffstat (limited to 'src/transport/ipc')
| -rw-r--r-- | src/transport/ipc/ipc.c | 12 |
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; |
