diff options
| author | Garrett D'Amore <garrett@damore.org> | 2018-12-22 19:23:26 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-12-22 19:23:26 -0800 |
| commit | ee16d11a59120cd4d981e0dcb90741fa4141372a (patch) | |
| tree | 98da4bc9601f30e2c9deb403fe213c9fb4335597 /src/platform/windows/win_ipcdial.c | |
| parent | d00483eadbee48b820a8a79163c5296953b6f5cb (diff) | |
| download | nng-ee16d11a59120cd4d981e0dcb90741fa4141372a.tar.gz nng-ee16d11a59120cd4d981e0dcb90741fa4141372a.tar.bz2 nng-ee16d11a59120cd4d981e0dcb90741fa4141372a.zip | |
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.
Diffstat (limited to 'src/platform/windows/win_ipcdial.c')
| -rw-r--r-- | src/platform/windows/win_ipcdial.c | 17 |
1 files changed, 9 insertions, 8 deletions
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 <stdio.h> @@ -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 |
