From 9e3f9d4d7a953d41210b9d3757fb003573b90308 Mon Sep 17 00:00:00 2001 From: Garrett D'Amore Date: Wed, 14 Dec 2016 20:44:51 -0800 Subject: nni_socket_add_pipe and nni_socket_remove_pipe implementation. --- src/protocol/pair/pair.c | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) (limited to 'src/protocol') diff --git a/src/protocol/pair/pair.c b/src/protocol/pair/pair.c index 4b8a180b..6bb55a5d 100644 --- a/src/protocol/pair/pair.c +++ b/src/protocol/pair/pair.c @@ -183,18 +183,17 @@ pair_sender(void *arg) for (;;) { rv = nni_msgqueue_get_sig(uwq, &msg, -1, &pp->sigclose); if (rv != 0) { - (void) nni_pipe_close(pipe); - return; + break; } rv = nni_pipe_send(pipe, msg); if (rv != 0) { nni_msg_free(msg); - (void) nni_pipe_close(pipe); - /* signal the other side */ - nni_msgqueue_signal(urq, &pp->sigclose); - return; + break; } } + nni_msgqueue_signal(urq, &pp->sigclose); + nni_pipe_close(pipe); + nni_socket_remove_pipe(pair->sock, pipe); } static void @@ -218,18 +217,17 @@ pair_receiver(void *arg) for (;;) { rv = nni_pipe_recv(pipe, &msg); if (rv != 0) { - nni_msg_free(msg); - (void) nni_pipe_close(pipe); - /* signal the other side */ - nni_msgqueue_signal(uwq, &pp->sigclose); - return; + break; } rv = nni_msgqueue_put_sig(urq, msg, -1, &pp->sigclose); if (rv != 0) { - (void) nni_pipe_close(pipe); - return; + nni_msg_free(msg); + break; } } + nni_msgqueue_signal(uwq, &pp->sigclose); + nni_pipe_close(pipe); + nni_socket_remove_pipe(pair->sock, pipe); } static int -- cgit v1.2.3-70-g09d2