aboutsummaryrefslogtreecommitdiff
path: root/src/core/endpt.c
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2017-06-06 09:24:31 -0700
committerGarrett D'Amore <garrett@damore.org>2017-06-06 09:25:37 -0700
commitbf2eb2eed3232cb9f3872d46c5e6bca8855840be (patch)
tree0eeb9e6082d32c997814cd1c9d3fa850176fa4eb /src/core/endpt.c
parent4771d04fb589c406ff8b2fc1b4edf93b2df42515 (diff)
downloadnng-bf2eb2eed3232cb9f3872d46c5e6bca8855840be.tar.gz
nng-bf2eb2eed3232cb9f3872d46c5e6bca8855840be.tar.bz2
nng-bf2eb2eed3232cb9f3872d46c5e6bca8855840be.zip
Reconn times acquired atomically by socket under lock.
Diffstat (limited to 'src/core/endpt.c')
-rw-r--r--src/core/endpt.c21
1 files changed, 7 insertions, 14 deletions
diff --git a/src/core/endpt.c b/src/core/endpt.c
index de166aff..d598caa2 100644
--- a/src/core/endpt.c
+++ b/src/core/endpt.c
@@ -238,25 +238,18 @@ nni_dialer(void *arg)
nni_ep *ep = arg;
int rv;
nni_time cooldown;
- nni_duration maxrtime;
- nni_duration defrtime;
+ nni_duration maxrtime, nmaxrtime;
+ nni_duration defrtime, ndefrtime;
nni_duration rtime;
- // XXX: these need to be obtained from the socket using a lock.
- defrtime = ep->ep_sock->s_reconn;
- if ((maxrtime = ep->ep_sock->s_reconnmax) == 0) {
- maxrtime = defrtime;
- }
+ nni_sock_reconntimes(ep->ep_sock, &defrtime, &maxrtime);
for (;;) {
- // XXX: socket lock please...
- if ((defrtime != ep->ep_sock->s_reconn) ||
- (maxrtime != ep->ep_sock->s_reconnmax)) {
+ nni_sock_reconntimes(ep->ep_sock, &ndefrtime, &nmaxrtime);
+ if ((defrtime != ndefrtime) || (maxrtime != nmaxrtime)) {
// Times changed, so reset them.
- defrtime = ep->ep_sock->s_reconn;
- if ((maxrtime = ep->ep_sock->s_reconnmax) == 0) {
- maxrtime = defrtime;
- }
+ defrtime = ndefrtime;
+ maxrtime = nmaxrtime;
rtime = defrtime;
}