diff options
Diffstat (limited to 'src/protocol/bus')
| -rw-r--r-- | src/protocol/bus/bus.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/src/protocol/bus/bus.c b/src/protocol/bus/bus.c index b88337d1..e8428e42 100644 --- a/src/protocol/bus/bus.c +++ b/src/protocol/bus/bus.c @@ -165,7 +165,7 @@ nni_bus_pipe_fini(void *arg) static int -nni_bus_pipe_add(void *arg) +nni_bus_pipe_start(void *arg) { nni_bus_pipe *ppipe = arg; nni_bus_sock *psock = ppipe->psock; @@ -182,15 +182,18 @@ nni_bus_pipe_add(void *arg) static void -nni_bus_pipe_rem(void *arg) +nni_bus_pipe_stop(void *arg) { nni_bus_pipe *ppipe = arg; nni_bus_sock *psock = ppipe->psock; + nni_sock *nsock = psock->nsock; - nni_list_remove(&psock->pipes, ppipe); + if (nni_list_active(&psock->pipes, ppipe)) { + nni_list_remove(&psock->pipes, ppipe); - nni_msgq_close(ppipe->sendq); - nni_msgq_aio_cancel(nni_sock_recvq(psock->nsock), &ppipe->aio_putq); + nni_msgq_close(ppipe->sendq); + nni_msgq_aio_cancel(nni_sock_recvq(nsock), &ppipe->aio_putq); + } } @@ -390,8 +393,8 @@ nni_bus_sock_getopt(void *arg, int opt, void *buf, size_t *szp) static nni_proto_pipe_ops nni_bus_pipe_ops = { .pipe_init = nni_bus_pipe_init, .pipe_fini = nni_bus_pipe_fini, - .pipe_add = nni_bus_pipe_add, - .pipe_rem = nni_bus_pipe_rem, + .pipe_start = nni_bus_pipe_start, + .pipe_stop = nni_bus_pipe_stop, }; static nni_proto_sock_ops nni_bus_sock_ops = { |
