aboutsummaryrefslogtreecommitdiff
path: root/src/platform
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2024-12-28 16:39:05 -0800
committerGarrett D'Amore <garrett@damore.org>2024-12-28 16:39:05 -0800
commitbef6b378ae5d6bbfedfb5e7e7f9f433310fac4e9 (patch)
treea479cbe3e126ebbc63727f6b0e14627ddd61f9b0 /src/platform
parent6a414614d906999bd4eb6e9b2f96ca972b437ffc (diff)
downloadnng-bef6b378ae5d6bbfedfb5e7e7f9f433310fac4e9.tar.gz
nng-bef6b378ae5d6bbfedfb5e7e7f9f433310fac4e9.tar.bz2
nng-bef6b378ae5d6bbfedfb5e7e7f9f433310fac4e9.zip
tcp stream: add test for ESTATE getting port on unbound listener
Diffstat (limited to 'src/platform')
-rw-r--r--src/platform/posix/posix_tcplisten.c11
-rw-r--r--src/platform/tcp_stream_test.c21
-rw-r--r--src/platform/windows/win_tcplisten.c10
3 files changed, 22 insertions, 20 deletions
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);
}