summaryrefslogtreecommitdiff
path: root/src/core/endpt.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/endpt.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/endpt.c')
-rw-r--r--src/core/endpt.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/core/endpt.c b/src/core/endpt.c
index c87c8ce6..a04cfa00 100644
--- a/src/core/endpt.c
+++ b/src/core/endpt.c
@@ -111,7 +111,7 @@ nni_endpt_connect(nni_endpt *ep, nni_pipe **pp)
}
rv = ep->ep_ops.ep_connect(ep->ep_data, &pipe->p_trandata);
if (rv != 0) {
- nni_pipe_destroy(pipe);
+ nni_pipe_close(pipe);
return (rv);
}
ep->ep_pipe = pipe;
@@ -179,6 +179,7 @@ nni_dialer(void *arg)
break;
case NNG_ECLOSED:
return;
+
default:
// XXX: THIS NEEDS TO BE A PROPER BACKOFF.
cooldown = 1000000;
@@ -265,7 +266,7 @@ nni_endpt_accept(nni_endpt *ep, nni_pipe **pp)
return (rv);
}
if ((rv = ep->ep_ops.ep_accept(ep->ep_data, &pipe->p_trandata)) != 0) {
- nni_pipe_destroy(pipe);
+ nni_pipe_close(pipe);
return (rv);
}
*pp = pipe;