diff options
| author | Garrett D'Amore <garrett@damore.org> | 2018-04-04 09:41:12 -0700 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2018-04-04 09:41:12 -0700 |
| commit | 0aa1de1316b46bb4af23fdf26759bca08008eaf5 (patch) | |
| tree | aad04dd247016e6ef31469d2f92b64e633565da9 /src/transport | |
| parent | 4e6a71bf2f0fdfdfe15a774a5d541aa22b8b9195 (diff) | |
| download | nng-0aa1de1316b46bb4af23fdf26759bca08008eaf5.tar.gz nng-0aa1de1316b46bb4af23fdf26759bca08008eaf5.tar.bz2 nng-0aa1de1316b46bb4af23fdf26759bca08008eaf5.zip | |
fixes #324 nni_aio_set_synch leads to race condition
fixes #325 synchronous aio completion crash
fixes #327 move nni_clock() operations to outside the nni_aio_lk.
This work was done for the context tree, and is necessary to properly
enable that branch.
Diffstat (limited to 'src/transport')
| -rw-r--r-- | src/transport/ipc/ipc.c | 6 | ||||
| -rw-r--r-- | src/transport/tcp/tcp.c | 6 | ||||
| -rw-r--r-- | src/transport/tls/tls.c | 6 | ||||
| -rw-r--r-- | src/transport/zerotier/zerotier.c | 1 |
4 files changed, 6 insertions, 13 deletions
diff --git a/src/transport/ipc/ipc.c b/src/transport/ipc/ipc.c index e2bb5f99..98d3f177 100644 --- a/src/transport/ipc/ipc.c +++ b/src/transport/ipc/ipc.c @@ -252,8 +252,7 @@ nni_ipc_pipe_send_cb(void *arg) n = nni_msg_len(msg); nni_aio_set_msg(aio, NULL); nni_msg_free(msg); - nni_aio_set_synch(aio); - nni_aio_finish(aio, 0, n); + nni_aio_finish_synch(aio, 0, n); } static void @@ -341,8 +340,7 @@ nni_ipc_pipe_recv_cb(void *arg) nni_mtx_unlock(&pipe->mtx); nni_aio_set_msg(aio, msg); - nni_aio_set_synch(aio); - nni_aio_finish(aio, 0, nni_msg_len(msg)); + nni_aio_finish_synch(aio, 0, nni_msg_len(msg)); return; recv_error: diff --git a/src/transport/tcp/tcp.c b/src/transport/tcp/tcp.c index 7f819d4f..9db5b016 100644 --- a/src/transport/tcp/tcp.c +++ b/src/transport/tcp/tcp.c @@ -250,8 +250,7 @@ nni_tcp_pipe_send_cb(void *arg) n = nni_msg_len(msg); nni_aio_set_msg(aio, NULL); nni_msg_free(msg); - nni_aio_set_synch(aio); - nni_aio_finish(aio, 0, n); + nni_aio_finish_synch(aio, 0, n); } static void @@ -321,9 +320,8 @@ nni_tcp_pipe_recv_cb(void *arg) } nni_mtx_unlock(&p->mtx); - nni_aio_set_synch(aio); nni_aio_set_msg(aio, msg); - nni_aio_finish(aio, 0, nni_msg_len(msg)); + nni_aio_finish_synch(aio, 0, nni_msg_len(msg)); return; recv_error: diff --git a/src/transport/tls/tls.c b/src/transport/tls/tls.c index 610a7f7c..a78e8085 100644 --- a/src/transport/tls/tls.c +++ b/src/transport/tls/tls.c @@ -257,8 +257,7 @@ nni_tls_pipe_send_cb(void *arg) n = nni_msg_len(msg); nni_aio_set_msg(aio, NULL); nni_msg_free(msg); - nni_aio_set_synch(aio); - nni_aio_finish(aio, 0, n); + nni_aio_finish_synch(aio, 0, n); } static void @@ -329,9 +328,8 @@ nni_tls_pipe_recv_cb(void *arg) } nni_mtx_unlock(&p->mtx); - nni_aio_set_synch(aio); nni_aio_set_msg(aio, msg); - nni_aio_finish(aio, 0, nni_msg_len(msg)); + nni_aio_finish_synch(aio, 0, nni_msg_len(msg)); return; recv_error: diff --git a/src/transport/zerotier/zerotier.c b/src/transport/zerotier/zerotier.c index da22dc54..9fc0bc62 100644 --- a/src/transport/zerotier/zerotier.c +++ b/src/transport/zerotier/zerotier.c @@ -1368,7 +1368,6 @@ zt_wire_packet_send(ZT_Node *node, void *userptr, void *thr, int64_t socket, // This should be non-blocking/best-effort, so while // not great that we're holding the lock, also not tragic. - nni_aio_set_synch(aio); nni_plat_udp_send(udp, aio); return (0); |
