aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2019-01-05 16:30:02 -0800
committerGarrett D'Amore <garrett@damore.org>2019-01-06 12:12:27 -0800
commit6d0027fae75e4810d66eb4c5817255ffa517e158 (patch)
tree9bd36c16cf293e4335ab0650e226a335029012ad /src
parent68c6310ee83078d6ad6af0c9ccddef11b8f8b7c2 (diff)
downloadnng-6d0027fae75e4810d66eb4c5817255ffa517e158.tar.gz
nng-6d0027fae75e4810d66eb4c5817255ffa517e158.tar.bz2
nng-6d0027fae75e4810d66eb4c5817255ffa517e158.zip
fixes #839 TCP listener_start API should use constant sockaddr
Diffstat (limited to 'src')
-rw-r--r--src/core/platform.h7
-rw-r--r--src/platform/posix/posix_tcplisten.c11
-rw-r--r--src/platform/windows/win_tcplisten.c3
-rw-r--r--src/supplemental/tcp/tcp.c2
-rw-r--r--src/supplemental/tls/tls_common.c2
-rw-r--r--src/transport/tcp/tcp.c63
6 files changed, 6 insertions, 82 deletions
diff --git a/src/core/platform.h b/src/core/platform.h
index 18107120..69fa5db6 100644
--- a/src/core/platform.h
+++ b/src/core/platform.h
@@ -317,11 +317,8 @@ extern void nni_tcp_listener_fini(nni_tcp_listener *);
extern void nni_tcp_listener_close(nni_tcp_listener *);
// nni_tcp_listener_listen creates the socket in listening mode, bound
-// to the specified address. The address will be updated to reflect
-// the actual address bound (making it possible to bind to port 0 to
-// specify an ephemeral address, and then the actual address can be
-// examined afterwards.)
-extern int nni_tcp_listener_listen(nni_tcp_listener *, nni_sockaddr *);
+// to the specified address.
+extern int nni_tcp_listener_listen(nni_tcp_listener *, const nni_sockaddr *);
// nni_tcp_listener_accept accepts in incoming connect, asynchronously.
// On success, the first (and only) output will be an nni_tcp_conn *
diff --git a/src/platform/posix/posix_tcplisten.c b/src/platform/posix/posix_tcplisten.c
index 82334431..1e1b84b1 100644
--- a/src/platform/posix/posix_tcplisten.c
+++ b/src/platform/posix/posix_tcplisten.c
@@ -184,7 +184,7 @@ tcp_listener_cancel(nni_aio *aio, void *arg, int rv)
}
int
-nni_tcp_listener_listen(nni_tcp_listener *l, nni_sockaddr *sa)
+nni_tcp_listener_listen(nni_tcp_listener *l, const nni_sockaddr *sa)
{
socklen_t len;
struct sockaddr_storage ss;
@@ -247,15 +247,6 @@ nni_tcp_listener_listen(nni_tcp_listener *l, nni_sockaddr *sa)
return (rv);
}
- // Lets get the bound sockname, and pass that back to the caller.
- // This permits ephemeral port binding to work.
- // If this fails for some reason, we just don't update the
- // sockaddr structure. This is kind of suboptimal, but failures
- // here should never occur.
- len = sizeof(ss);
- (void) getsockname(fd, (void *) &ss, &len);
- (void) nni_posix_sockaddr2nn(sa, &ss);
-
nni_posix_pfd_set_cb(pfd, tcp_listener_cb, l);
l->pfd = pfd;
diff --git a/src/platform/windows/win_tcplisten.c b/src/platform/windows/win_tcplisten.c
index 750de13b..9cf16985 100644
--- a/src/platform/windows/win_tcplisten.c
+++ b/src/platform/windows/win_tcplisten.c
@@ -186,7 +186,7 @@ nni_tcp_listener_fini(nni_tcp_listener *l)
}
int
-nni_tcp_listener_listen(nni_tcp_listener *l, nni_sockaddr *sa)
+nni_tcp_listener_listen(nni_tcp_listener *l, const nni_sockaddr *sa)
{
int rv;
BOOL yes;
@@ -244,7 +244,6 @@ nni_tcp_listener_listen(nni_tcp_listener *l, nni_sockaddr *sa)
nni_mtx_unlock(&l->mtx);
return (rv);
}
- nni_win_sockaddr2nn(sa, &l->ss);
l->started = true;
nni_mtx_unlock(&l->mtx);
return (0);
diff --git a/src/supplemental/tcp/tcp.c b/src/supplemental/tcp/tcp.c
index f880362b..b8410b16 100644
--- a/src/supplemental/tcp/tcp.c
+++ b/src/supplemental/tcp/tcp.c
@@ -126,7 +126,7 @@ nng_tcp_listener_free(nng_tcp_listener *l)
}
int
-nng_tcp_listener_listen(nng_tcp_listener *l, nng_sockaddr *sa)
+nng_tcp_listener_listen(nng_tcp_listener *l, const nng_sockaddr *sa)
{
return (nni_tcp_listener_listen((void *) l, sa));
}
diff --git a/src/supplemental/tls/tls_common.c b/src/supplemental/tls/tls_common.c
index 95466558..f93ca0ba 100644
--- a/src/supplemental/tls/tls_common.c
+++ b/src/supplemental/tls/tls_common.c
@@ -470,7 +470,7 @@ nng_tls_listener_alloc(nng_tls_listener **lp)
}
int
-nng_tls_listener_listen(nng_tls_listener *l, nng_sockaddr *sa)
+nng_tls_listener_listen(nng_tls_listener *l, const nng_sockaddr *sa)
{
tls_ep *ep = (void *) l;
return (nni_tcp_listener_listen(ep->tcp.l, sa));
diff --git a/src/transport/tcp/tcp.c b/src/transport/tcp/tcp.c
index 38b8cbaf..30695918 100644
--- a/src/transport/tcp/tcp.c
+++ b/src/transport/tcp/tcp.c
@@ -989,57 +989,6 @@ tcptran_ep_set_recvmaxsz(void *arg, const void *v, size_t sz, nni_opt_type t)
}
static int
-tcptran_ep_get_nodelay(void *arg, void *v, size_t *szp, nni_opt_type t)
-{
- tcptran_ep *ep = arg;
- int rv;
- nni_mtx_lock(&ep->mtx);
- rv = nni_copyout_bool(ep->nodelay, v, szp, t);
- nni_mtx_unlock(&ep->mtx);
- return (rv);
-}
-
-static int
-tcptran_ep_set_nodelay(void *arg, const void *v, size_t sz, nni_opt_type t)
-{
- tcptran_ep *ep = arg;
- bool val;
- int rv;
- if (((rv = nni_copyin_bool(&val, v, sz, t)) == 0) && (ep != NULL)) {
- nni_mtx_lock(&ep->mtx);
- ep->nodelay = val;
- nni_mtx_unlock(&ep->mtx);
- }
- return (rv);
-}
-
-static int
-tcptran_ep_get_keepalive(void *arg, void *v, size_t *szp, nni_opt_type t)
-{
- tcptran_ep *ep = arg;
- int rv;
-
- nni_mtx_lock(&ep->mtx);
- rv = nni_copyout_bool(ep->keepalive, v, szp, t);
- nni_mtx_unlock(&ep->mtx);
- return (rv);
-}
-
-static int
-tcptran_ep_set_keepalive(void *arg, const void *v, size_t sz, nni_opt_type t)
-{
- tcptran_ep *ep = arg;
- bool val;
- int rv;
- if (((rv = nni_copyin_bool(&val, v, sz, t)) == 0) && (ep != NULL)) {
- nni_mtx_lock(&ep->mtx);
- ep->keepalive = val;
- nni_mtx_unlock(&ep->mtx);
- }
- return (rv);
-}
-
-static int
tcptran_ep_bind(void *arg)
{
tcptran_ep *ep = arg;
@@ -1082,18 +1031,6 @@ tcptran_ep_accept(void *arg, nni_aio *aio)
nni_mtx_unlock(&ep->mtx);
}
-static int
-tcptran_ep_get_locaddr(void *arg, void *buf, size_t *szp, nni_opt_type t)
-{
- tcptran_ep *ep = arg;
- int rv;
-
- nni_mtx_lock(&ep->mtx);
- rv = nni_copyout_sockaddr(&ep->bsa, buf, szp, t);
- nni_mtx_unlock(&ep->mtx);
- return (rv);
-}
-
static nni_tran_pipe_ops tcptran_pipe_ops = {
.p_init = tcptran_pipe_init,
.p_fini = tcptran_pipe_fini,