diff options
| author | Garrett D'Amore <garrett@damore.org> | 2016-12-31 11:53:27 -0800 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2016-12-31 11:53:27 -0800 |
| commit | 8fe11dfb66acfe067b21b6eb47eb9e3928169950 (patch) | |
| tree | a1a65072783f36fc6743474ada084907e7f8fc14 | |
| parent | eb4474a513981309fa5b46724599fd2d794ac5af (diff) | |
| download | nng-8fe11dfb66acfe067b21b6eb47eb9e3928169950.tar.gz nng-8fe11dfb66acfe067b21b6eb47eb9e3928169950.tar.bz2 nng-8fe11dfb66acfe067b21b6eb47eb9e3928169950.zip | |
Fix races in pipe termination.
| -rw-r--r-- | src/core/pipe.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/core/pipe.c b/src/core/pipe.c index 0a3f1d33..b57b7831 100644 --- a/src/core/pipe.c +++ b/src/core/pipe.c @@ -98,7 +98,11 @@ nni_pipe_create(nni_pipe **pp, nni_endpt *ep) if ((p = nni_alloc(sizeof (*p))) == NULL) { return (NNG_ENOMEM); } + p->p_send_thr = NULL; + p->p_recv_thr = NULL; p->p_trandata = NULL; + p->p_active = 0; + p->p_abort = 0; if ((rv = nni_cond_init(&p->p_cv, &sock->s_mx)) != 0) { nni_free(p, sizeof (*p)); return (rv); @@ -112,8 +116,6 @@ nni_pipe_create(nni_pipe **pp, nni_endpt *ep) p->p_sock = sock; p->p_ops = *ep->ep_ops.ep_pipe_ops; p->p_ep = ep; - p->p_active = 0; - p->p_abort = 0; if (ep->ep_dialer != NULL) { ep->ep_pipe = p; } @@ -207,7 +209,7 @@ nni_pipe_start(nni_pipe *pipe) if (rv != 0) { goto fail; } - rv = nni_thread_create(&pipe->p_send_thr, nni_pipe_receiver, pipe); + rv = nni_thread_create(&pipe->p_recv_thr, nni_pipe_receiver, pipe); if (rv != 0) { goto fail; } |
