From bef6b378ae5d6bbfedfb5e7e7f9f433310fac4e9 Mon Sep 17 00:00:00 2001 From: Garrett D'Amore Date: Sat, 28 Dec 2024 16:39:05 -0800 Subject: tcp stream: add test for ESTATE getting port on unbound listener --- src/platform/posix/posix_tcplisten.c | 11 +---------- src/platform/tcp_stream_test.c | 21 ++++++++++++++++++++- src/platform/windows/win_tcplisten.c | 10 +--------- 3 files changed, 22 insertions(+), 20 deletions(-) (limited to 'src/platform') diff --git a/src/platform/posix/posix_tcplisten.c b/src/platform/posix/posix_tcplisten.c index 6588fb78..6e7f4d14 100644 --- a/src/platform/posix/posix_tcplisten.c +++ b/src/platform/posix/posix_tcplisten.c @@ -377,17 +377,13 @@ static int tcp_listener_get_port(void *arg, void *buf, size_t *szp, nni_type t) { tcp_listener *l = arg; - int rv; nng_sockaddr sa; size_t sz; int port; uint8_t *paddr; sz = sizeof(sa); - rv = tcp_listener_get_locaddr(l, &sa, &sz, NNI_TYPE_SOCKADDR); - if (rv != 0) { - return (rv); - } + (void) tcp_listener_get_locaddr(l, &sa, &sz, NNI_TYPE_SOCKADDR); switch (sa.s_family) { case NNG_AF_INET: @@ -399,11 +395,6 @@ tcp_listener_get_port(void *arg, void *buf, size_t *szp, nni_type t) break; default: - paddr = NULL; - break; - } - - if (paddr == NULL) { return (NNG_ESTATE); } diff --git a/src/platform/tcp_stream_test.c b/src/platform/tcp_stream_test.c index 708120c3..e28fb46c 100644 --- a/src/platform/tcp_stream_test.c +++ b/src/platform/tcp_stream_test.c @@ -155,8 +155,27 @@ test_tcp_listen_accept_cancel(void) nng_stream_listener_free(l); } +void +test_tcp_listen_port_zero_not_bound(void) +{ + nng_stream_listener *l; + char *addr; + int p; + + nng_log_set_logger(nng_stderr_logger); + NUTS_ADDR_ZERO(addr, "tcp"); + + // start a listening stream listener but do not call accept + NUTS_PASS(nng_stream_listener_alloc(&l, addr)); + NUTS_FAIL(nng_stream_listener_get_int(l, NNG_OPT_TCP_BOUND_PORT, &p), + NNG_ESTATE); + nng_stream_listener_free(l); +} + NUTS_TESTS = { { "tcp stream", test_tcp_stream }, - { "tcp stream listen accept cancel", test_tcp_listen_accept_cancel }, + { "tcp listen accept cancel", test_tcp_listen_accept_cancel }, + { "tcp listen port zero not bound", + test_tcp_listen_port_zero_not_bound }, { NULL, NULL }, }; diff --git a/src/platform/windows/win_tcplisten.c b/src/platform/windows/win_tcplisten.c index 9366be59..c247ed4f 100644 --- a/src/platform/windows/win_tcplisten.c +++ b/src/platform/windows/win_tcplisten.c @@ -410,10 +410,7 @@ tcp_listener_get_port(void *arg, void *buf, size_t *szp, nni_type t) uint8_t *paddr; sz = sizeof(sa); - rv = tcp_listener_get_locaddr(l, &sa, &sz, NNI_TYPE_SOCKADDR); - if (rv != 0) { - return (rv); - } + (void) tcp_listener_get_locaddr(l, &sa, &sz, NNI_TYPE_SOCKADDR); switch (sa.s_family) { case NNG_AF_INET: @@ -425,11 +422,6 @@ tcp_listener_get_port(void *arg, void *buf, size_t *szp, nni_type t) break; default: - paddr = NULL; - break; - } - - if (paddr == NULL) { return (NNG_ESTATE); } -- cgit v1.2.3-70-g09d2