aboutsummaryrefslogtreecommitdiff
path: root/src/platform/windows
diff options
context:
space:
mode:
Diffstat (limited to 'src/platform/windows')
-rw-r--r--src/platform/windows/win_iocp.c11
-rw-r--r--src/platform/windows/win_ipc.c8
-rw-r--r--src/platform/windows/win_resolv.c10
3 files changed, 13 insertions, 16 deletions
diff --git a/src/platform/windows/win_iocp.c b/src/platform/windows/win_iocp.c
index 1189433a..a3ae3748 100644
--- a/src/platform/windows/win_iocp.c
+++ b/src/platform/windows/win_iocp.c
@@ -1,6 +1,6 @@
//
-// Copyright 2017 Garrett D'Amore <garrett@damore.org>
-// Copyright 2017 Capitar IT Group BV <info@capitar.com>
+// Copyright 2018 Staysail Systems, Inc. <info@staysail.tech>
+// Copyright 2018 Capitar IT Group BV <info@capitar.com>
//
// This software is supplied under the terms of the MIT License, a
// copy of which should be located in the distribution where this
@@ -155,12 +155,11 @@ nni_win_event_resubmit(nni_win_event *evt, nni_aio *aio)
void
nni_win_event_submit(nni_win_event *evt, nni_aio *aio)
{
- nni_mtx_lock(&evt->mtx);
- if (nni_aio_start(aio, nni_win_event_cancel, evt) != 0) {
- // the aio was aborted
- nni_mtx_unlock(&evt->mtx);
+ if (nni_aio_begin(aio) != 0) {
return;
}
+ nni_mtx_lock(&evt->mtx);
+ nni_aio_schedule(aio, nni_win_event_cancel, evt);
nni_aio_list_append(&evt->aios, aio);
nni_win_event_start(evt);
nni_mtx_unlock(&evt->mtx);
diff --git a/src/platform/windows/win_ipc.c b/src/platform/windows/win_ipc.c
index 5843917c..d372f639 100644
--- a/src/platform/windows/win_ipc.c
+++ b/src/platform/windows/win_ipc.c
@@ -491,16 +491,16 @@ nni_plat_ipc_ep_connect(nni_plat_ipc_ep *ep, nni_aio *aio)
{
nni_win_ipc_conn_work *w = &nni_win_ipc_connecter;
+ if (nni_aio_begin(aio) != 0) {
+ return;
+ }
nni_mtx_lock(&w->mtx);
NNI_ASSERT(!nni_list_active(&w->waiters, ep));
- if (nni_aio_start(aio, nni_win_ipc_conn_cancel, ep) != 0) {
- nni_mtx_unlock(&w->mtx);
- return;
- }
ep->con_aio = aio;
nni_list_append(&w->waiters, ep);
+ nni_aio_schedule(aio, nni_win_ipc_conn_cancel, ep);
nni_cv_wake(&w->cv);
nni_mtx_unlock(&w->mtx);
}
diff --git a/src/platform/windows/win_resolv.c b/src/platform/windows/win_resolv.c
index d07b4fd5..72e6b439 100644
--- a/src/platform/windows/win_resolv.c
+++ b/src/platform/windows/win_resolv.c
@@ -180,6 +180,9 @@ nni_win_resolv_ip(const char *host, const char *serv, int passive, int family,
int rv;
int fam;
+ if (nni_aio_begin(aio) != 0) {
+ return;
+ }
switch (family) {
case NNG_AF_INET:
fam = AF_INET;
@@ -211,12 +214,7 @@ nni_win_resolv_ip(const char *host, const char *serv, int passive, int family,
item->family = fam;
nni_mtx_lock(&nni_win_resolv_mtx);
- // If we were stopped, we're done...
- if ((rv = nni_aio_start(aio, nni_win_resolv_cancel, item)) != 0) {
- nni_mtx_unlock(&nni_win_resolv_mtx);
- NNI_FREE_STRUCT(item);
- return;
- }
+ nni_aio_schedule(aio, nni_win_resolv_cancel, item);
nni_task_dispatch(&item->task);
nni_mtx_unlock(&nni_win_resolv_mtx);
}