diff options
Diffstat (limited to 'src/platform/windows/win_thread.c')
| -rw-r--r-- | src/platform/windows/win_thread.c | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/src/platform/windows/win_thread.c b/src/platform/windows/win_thread.c index 1b903b26..be94d638 100644 --- a/src/platform/windows/win_thread.c +++ b/src/platform/windows/win_thread.c @@ -159,6 +159,7 @@ nni_plat_init(int (*helper)(void)) LONG old; static LONG initing = 0; static LONG inited = 0; + int rv; if (inited) { return (0); // fast path @@ -177,19 +178,28 @@ nni_plat_init(int (*helper)(void)) WORD ver; ver = MAKEWORD(2, 2); if (WSAStartup(MAKEWORD(2, 2), &data) != 0) { - InterlockedExchange(&initing, 0); if ((LOBYTE(data.wVersion) != 2) || (HIBYTE(data.wVersion) != 2)) { nni_panic("got back wrong winsock ver"); } - return (NNG_ENOMEM); + rv = NNG_EINVAL; + goto out; + } + printf("STARTING...\n"); + if ((rv = nni_win_iocp_sysinit()) != 0) { + goto out; + } + if ((rv = nni_win_resolv_sysinit()) != 0) { + goto out; } helper(); inited = 1; } + +out: InterlockedExchange(&initing, 0); - return (0); + return (rv); } @@ -197,6 +207,8 @@ void nni_plat_fini(void) { WSACleanup(); + nni_win_resolv_sysfini(); + nni_win_iocp_sysfini(); } |
