From 6d0027fae75e4810d66eb4c5817255ffa517e158 Mon Sep 17 00:00:00 2001 From: Garrett D'Amore Date: Sat, 5 Jan 2019 16:30:02 -0800 Subject: fixes #839 TCP listener_start API should use constant sockaddr --- src/core/platform.h | 7 ++-- src/platform/posix/posix_tcplisten.c | 11 +------ src/platform/windows/win_tcplisten.c | 3 +- src/supplemental/tcp/tcp.c | 2 +- src/supplemental/tls/tls_common.c | 2 +- src/transport/tcp/tcp.c | 63 ------------------------------------ 6 files changed, 6 insertions(+), 82 deletions(-) (limited to 'src') 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 @@ -988,57 +988,6 @@ tcptran_ep_set_recvmaxsz(void *arg, const void *v, size_t sz, nni_opt_type t) return (rv); } -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) { @@ -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, -- cgit v1.2.3-70-g09d2