From ee16d11a59120cd4d981e0dcb90741fa4141372a Mon Sep 17 00:00:00 2001 From: Garrett D'Amore Date: Sat, 22 Dec 2018 19:23:26 -0800 Subject: fixes #823 Define public IPC (#824) This introduces a basic IPC API, modeled on the TCP API, for direct access. Only connection options are exposed at present -- we need to add options for dialers and listeners (and particularly listener settings for permissions and security attributes.) Documentation is still outstanding, but a very limited test suite exists. --- src/platform/windows/win_ipcdial.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'src/platform/windows/win_ipcdial.c') diff --git a/src/platform/windows/win_ipcdial.c b/src/platform/windows/win_ipcdial.c index 67865687..4c3d5c6c 100644 --- a/src/platform/windows/win_ipcdial.c +++ b/src/platform/windows/win_ipcdial.c @@ -10,8 +10,6 @@ #include "core/nng_impl.h" -#ifdef NNG_PLATFORM_WINDOWS - #include "win_ipc.h" #include @@ -108,16 +106,21 @@ ipc_dial_thr(void *arg) nni_list_remove(&d->aios, aio); nni_aio_set_prov_extra(aio, 0, NULL); - nni_strfree(path); if (((rv = nni_win_io_register(f)) != 0) || ((rv = nni_win_ipc_conn_init(&c, f)) != 0)) { DisconnectNamedPipe(f); CloseHandle(f); nni_aio_finish_error(aio, rv); + nni_strfree(path); continue; } - c->dialer = d; + c->dialer = true; + c->sa.s_ipc.sa_family = NNG_AF_IPC; + snprintf(c->sa.s_ipc.sa_path, + sizeof(c->sa.s_ipc.sa_path), "%s", + path + strlen(IPC_PIPE_PREFIX)); + nni_strfree(path); nni_aio_set_output(aio, 0, c); nni_aio_finish(aio, 0, 0); } @@ -169,8 +172,8 @@ nni_ipc_dialer_dial(nni_ipc_dialer *d, const nni_sockaddr *sa, nni_aio *aio) nni_aio_finish_error(aio, NNG_EADDRINVAL); return; } - if ((rv = nni_asprintf(&path, "\\\\.\\pipe\\%s", sa->s_ipc.sa_path)) != - 0) { + if ((rv = nni_asprintf( + &path, IPC_PIPE_PREFIX "%s", sa->s_ipc.sa_path)) != 0) { nni_aio_finish_error(aio, rv); return; } @@ -261,5 +264,3 @@ nni_win_ipc_sysfini(void) nni_cv_fini(&worker->cv); nni_mtx_fini(&worker->mtx); } - -#endif // NNG_PLATFORM_WINDOWS -- cgit v1.2.3-70-g09d2