diff options
| author | Garrett D'Amore <garrett@damore.org> | 2017-07-20 14:34:51 -0700 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2017-07-20 14:34:51 -0700 |
| commit | a37093079b492e966344416445aae354b147d30e (patch) | |
| tree | 2f21fc2bc716f2423ba02f4713b25038c429ec4e /src/core/socket.h | |
| parent | 88fb04f61918b06e6e269c1960058c3df5e0a0ef (diff) | |
| download | nng-a37093079b492e966344416445aae354b147d30e.tar.gz nng-a37093079b492e966344416445aae354b147d30e.tar.bz2 nng-a37093079b492e966344416445aae354b147d30e.zip | |
Yet more race condition fixes.
We need to remember that protocol stops can run synchronously, and
therefore we need to wait for the aio to complete. Further, we need
to break apart shutting down aio activity from deallocation, as we need
to shut down *all* async activity before deallocating *anything*.
Noticed that we had a pipe race in the surveyor pattern too.
Diffstat (limited to 'src/core/socket.h')
| -rw-r--r-- | src/core/socket.h | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/core/socket.h b/src/core/socket.h index d0196eea..41dfbc33 100644 --- a/src/core/socket.h +++ b/src/core/socket.h @@ -87,8 +87,11 @@ extern void nni_sock_unnotify(nni_sock *, nni_notify *); extern void nni_sock_ep_remove(nni_sock *, nni_ep *); // nni_sock_pipe_add adds the pipe to the socket. It is called by -// the generic pipe creation code. -extern int nni_sock_pipe_add(nni_sock *, nni_pipe *); +// the generic pipe creation code. It also adds the socket to the +// ep list, and starts the pipe. It does all these to ensure that +// we have complete success or failure, and there is no point where +// a pipe could wind up orphaned. +extern int nni_sock_pipe_add(nni_sock *, nni_ep *, nni_pipe *); extern void nni_sock_pipe_remove(nni_sock *, nni_pipe *); |
