aboutsummaryrefslogtreecommitdiff
path: root/src/protocol/pair/pair.c
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2016-12-14 20:44:51 -0800
committerGarrett D'Amore <garrett@damore.org>2016-12-14 20:44:51 -0800
commit9e3f9d4d7a953d41210b9d3757fb003573b90308 (patch)
treec2e634c4eab4f836eedfa12e30e2eecd9c1a0009 /src/protocol/pair/pair.c
parent3583d5e407476b8836228c0abc52c400d74aba61 (diff)
downloadnng-9e3f9d4d7a953d41210b9d3757fb003573b90308.tar.gz
nng-9e3f9d4d7a953d41210b9d3757fb003573b90308.tar.bz2
nng-9e3f9d4d7a953d41210b9d3757fb003573b90308.zip
nni_socket_add_pipe and nni_socket_remove_pipe implementation.
Diffstat (limited to 'src/protocol/pair/pair.c')
-rw-r--r--src/protocol/pair/pair.c24
1 files changed, 11 insertions, 13 deletions
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