aboutsummaryrefslogtreecommitdiff
path: root/src/core/socket.c
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2017-01-01 14:34:29 -0800
committerGarrett D'Amore <garrett@damore.org>2017-01-01 14:34:29 -0800
commit3fd43c488b47874db22a87a1d87eed94bbd85725 (patch)
treeed9fe38b370c9a6162ac05596b91adfac9cb5579 /src/core/socket.c
parentc7b541af4a1a2c410dc63a638a17adb31d7342a3 (diff)
downloadnng-3fd43c488b47874db22a87a1d87eed94bbd85725.tar.gz
nng-3fd43c488b47874db22a87a1d87eed94bbd85725.tar.bz2
nng-3fd43c488b47874db22a87a1d87eed94bbd85725.zip
Pipe simplifications for thread management.
This may also address a race in closing down pipes. Now pipes are always registered with the socket. They also always have both a sender and receiver thread. If the protocol doesn't need one or the other, the stock thread just exits early.
Diffstat (limited to 'src/core/socket.c')
-rw-r--r--src/core/socket.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/core/socket.c b/src/core/socket.c
index 1700ca9f..2e95c229 100644
--- a/src/core/socket.c
+++ b/src/core/socket.c
@@ -53,7 +53,9 @@ nni_reaper(void *arg)
nni_mutex_exit(&sock->s_mx);
// This should already have been done.
- pipe->p_ops.p_close(pipe->p_trandata);
+ if (pipe->p_trandata != NULL) {
+ pipe->p_ops.p_close(pipe->p_trandata);
+ }
// Remove the pipe from the protocol. Protocols may
// keep lists of pipes for managing their topologies.