diff options
Diffstat (limited to 'src/transport/tls')
| -rw-r--r-- | src/transport/tls/tls.c | 49 |
1 files changed, 19 insertions, 30 deletions
diff --git a/src/transport/tls/tls.c b/src/transport/tls/tls.c index a852ddd8..2ea14e93 100644 --- a/src/transport/tls/tls.c +++ b/src/transport/tls/tls.c @@ -405,13 +405,11 @@ nni_tls_pipe_send(void *arg, nni_aio *aio) { nni_tls_pipe *p = arg; - nni_mtx_lock(&p->mtx); - - if (nni_aio_start(aio, nni_tls_cancel_tx, p) != 0) { - nni_mtx_unlock(&p->mtx); + if (nni_aio_begin(aio) != 0) { return; } - + nni_mtx_lock(&p->mtx); + nni_aio_schedule(aio, nni_tls_cancel_tx, p); nni_list_append(&p->sendq, aio); if (nni_list_first(&p->sendq) == aio) { nni_tls_pipe_dosend(p, aio); @@ -463,12 +461,12 @@ nni_tls_pipe_recv(void *arg, nni_aio *aio) { nni_tls_pipe *p = arg; - nni_mtx_lock(&p->mtx); - - if (nni_aio_start(aio, nni_tls_cancel_rx, p) != 0) { - nni_mtx_unlock(&p->mtx); + if (nni_aio_begin(aio) != 0) { return; } + nni_mtx_lock(&p->mtx); + + nni_aio_schedule(aio, nni_tls_cancel_rx, p); nni_aio_list_append(&p->recvq, aio); if (nni_list_first(&p->recvq) == aio) { nni_tls_pipe_dorecv(p); @@ -519,6 +517,9 @@ nni_tls_pipe_start(void *arg, nni_aio *aio) nni_aio * negaio; nni_iov iov; + if (nni_aio_begin(aio) != 0) { + return; + } nni_mtx_lock(&p->mtx); p->txlen[0] = 0; p->txlen[1] = 'S'; @@ -536,10 +537,7 @@ nni_tls_pipe_start(void *arg, nni_aio *aio) iov.iov_len = 8; iov.iov_buf = &p->txlen[0]; nni_aio_set_iov(negaio, 1, &iov); - if (nni_aio_start(aio, nni_tls_cancel_nego, p) != 0) { - nni_mtx_unlock(&p->mtx); - return; - } + nni_aio_schedule(aio, nni_tls_cancel_nego, p); nni_tls_send(p->tls, negaio); nni_mtx_unlock(&p->mtx); } @@ -743,18 +741,14 @@ static void nni_tls_ep_accept(void *arg, nni_aio *aio) { nni_tls_ep *ep = arg; - int rv; - nni_mtx_lock(&ep->mtx); - NNI_ASSERT(ep->user_aio == NULL); - - if ((rv = nni_aio_start(aio, nni_tls_cancel_ep, ep)) != 0) { - nni_mtx_unlock(&ep->mtx); + if (nni_aio_begin(aio) != 0) { return; } - + nni_mtx_lock(&ep->mtx); + NNI_ASSERT(ep->user_aio == NULL); + nni_aio_schedule(aio, nni_tls_cancel_ep, ep); ep->user_aio = aio; - nni_plat_tcp_ep_accept(ep->tep, ep->aio); nni_mtx_unlock(&ep->mtx); } @@ -763,19 +757,14 @@ static void nni_tls_ep_connect(void *arg, nni_aio *aio) { nni_tls_ep *ep = arg; - int rv; - nni_mtx_lock(&ep->mtx); - NNI_ASSERT(ep->user_aio == NULL); - - // If we can't start, then its dying and we can't report either. - if ((rv = nni_aio_start(aio, nni_tls_cancel_ep, ep)) != 0) { - nni_mtx_unlock(&ep->mtx); + if (nni_aio_begin(aio) != 0) { return; } - + nni_mtx_lock(&ep->mtx); + NNI_ASSERT(ep->user_aio == NULL); + nni_aio_schedule(aio, nni_tls_cancel_ep, ep); ep->user_aio = aio; - nni_plat_tcp_ep_connect(ep->tep, ep->aio); nni_mtx_unlock(&ep->mtx); } |
