aboutsummaryrefslogtreecommitdiff
path: root/src/sp
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2025-10-26 10:54:58 -0700
committerGarrett D'Amore <garrett@damore.org>2025-10-27 07:13:40 -0700
commitbe13c2e8845423cec17af429fc4e16a5d9749e47 (patch)
tree82614e403a41aac6581a9a223ef9eba5be557222 /src/sp
parent11c53f3d7f747d14fd69ce98c63d629bc821ef68 (diff)
downloadnng-be13c2e8845423cec17af429fc4e16a5d9749e47.tar.gz
nng-be13c2e8845423cec17af429fc4e16a5d9749e47.tar.bz2
nng-be13c2e8845423cec17af429fc4e16a5d9749e47.zip
Replace nng_pipe_get_addr, nng_stream_get_addr, and the NNG_OPT_REMADDR option.
More direct access methods are provided instead. This results in much lower friction when using, and is a step on the path to removing NNG_OPT_LOCADDR as well. We need to figure a solution for NNG_OPT_LOCADDR for dialers; for listeners there is little use in it either, and it will be removed. (Dialers will probably get a new NNG_OPT_BIND_IP option.)
Diffstat (limited to 'src/sp')
-rw-r--r--src/sp/pipe_test.c13
-rw-r--r--src/sp/transport/dtls/dtls.c35
-rw-r--r--src/sp/transport/dtls/dtls_tran_test.c20
-rw-r--r--src/sp/transport/inproc/inproc.c4
-rw-r--r--src/sp/transport/ipc/ipc_test.c80
-rw-r--r--src/sp/transport/socket/sockfd_test.c14
-rw-r--r--src/sp/transport/tcp/tcp.c11
-rw-r--r--src/sp/transport/tcp/tcp_test.c23
-rw-r--r--src/sp/transport/tls/tls.c14
-rw-r--r--src/sp/transport/tls/tls_tran_test.c20
-rw-r--r--src/sp/transport/udp/udp.c36
-rw-r--r--src/sp/transport/udp/udp_tran_test.c14
-rw-r--r--src/sp/transport/ws/ws_test.c7
-rw-r--r--src/sp/transport/ws/wss_test.c27
14 files changed, 49 insertions, 269 deletions
diff --git a/src/sp/pipe_test.c b/src/sp/pipe_test.c
index 8f668d8c..532b6219 100644
--- a/src/sp/pipe_test.c
+++ b/src/sp/pipe_test.c
@@ -265,9 +265,22 @@ test_pipe_reject(void)
fini_cases(&push, &pull);
}
+static void
+test_pipe_invalid(void)
+{
+ nng_pipe p;
+ nng_sockaddr sa;
+ p.id = 45; // a random invalid pipe
+
+ NUTS_FAIL(nng_pipe_peer_addr(p, &sa), NNG_ENOENT);
+ NUTS_FAIL(nng_pipe_self_addr(p, &sa), NNG_ENOENT);
+ NUTS_FAIL(nng_pipe_close(p), NNG_ENOENT);
+}
+
NUTS_TESTS = {
{ "pipe msg id", test_pipe_msg_id },
{ "pipe reconnect", test_pipe_reconnect },
{ "pipe reject", test_pipe_reject },
+ { "pipe invalid", test_pipe_invalid },
{ NULL, NULL },
};
diff --git a/src/sp/transport/dtls/dtls.c b/src/sp/transport/dtls/dtls.c
index 5a97af4f..5ac52838 100644
--- a/src/sp/transport/dtls/dtls.c
+++ b/src/sp/transport/dtls/dtls.c
@@ -1035,28 +1035,12 @@ dtls_pipe_get_recvmax(void *arg, void *v, size_t *szp, nni_type t)
return (rv);
}
-static nng_err
-dtls_pipe_get_remaddr(void *arg, void *v, size_t *szp, nni_type t)
-{
- dtls_pipe *p = arg;
- dtls_ep *ep = p->ep;
- nng_err rv;
- nni_mtx_lock(&ep->mtx);
- rv = nni_copyout_sockaddr(&p->peer_addr, v, szp, t);
- nni_mtx_unlock(&ep->mtx);
- return (rv);
-}
-
static nni_option dtls_pipe_options[] = {
{
.o_name = NNG_OPT_RECVMAXSZ,
.o_get = dtls_pipe_get_recvmax,
},
{
- .o_name = NNG_OPT_REMADDR,
- .o_get = dtls_pipe_get_remaddr,
- },
- {
.o_name = NULL,
},
};
@@ -1547,21 +1531,6 @@ dtls_ep_get_locaddr(void *arg, void *v, size_t *szp, nni_opt_type t)
}
static nng_err
-dtls_ep_get_remaddr(void *arg, void *v, size_t *szp, nni_opt_type t)
-{
- dtls_ep *ep = arg;
- nng_err rv;
-
- if (!ep->dialer) {
- return (NNG_ENOTSUP);
- }
- nni_mtx_lock(&ep->mtx);
- rv = nni_copyout_sockaddr(&ep->peer_sa, v, szp, t);
- nni_mtx_unlock(&ep->mtx);
- return (rv);
-}
-
-static nng_err
dtls_ep_get_recvmaxsz(void *arg, void *v, size_t *szp, nni_opt_type t)
{
dtls_ep *ep = arg;
@@ -1722,10 +1691,6 @@ static const nni_option dtls_ep_opts[] = {
.o_get = dtls_ep_get_locaddr,
},
{
- .o_name = NNG_OPT_REMADDR,
- .o_get = dtls_ep_get_remaddr,
- },
- {
.o_name = NNG_OPT_BOUND_PORT,
.o_get = dtls_ep_get_port,
},
diff --git a/src/sp/transport/dtls/dtls_tran_test.c b/src/sp/transport/dtls/dtls_tran_test.c
index a43a01f7..c6dc551c 100644
--- a/src/sp/transport/dtls/dtls_tran_test.c
+++ b/src/sp/transport/dtls/dtls_tran_test.c
@@ -75,7 +75,6 @@ test_dtls_port_zero_bind(void)
nng_socket s1;
nng_socket s2;
nng_tls_config *c1, *c2;
- nng_sockaddr sa;
nng_listener l;
nng_dialer d;
const nng_url *url;
@@ -90,10 +89,6 @@ test_dtls_port_zero_bind(void)
NUTS_PASS(nng_listener_start(l, 0));
NUTS_PASS(nng_listener_get_url(l, &url));
NUTS_MATCH(nng_url_scheme(url), "dtls");
- NUTS_PASS(nng_listener_get_addr(l, NNG_OPT_LOCADDR, &sa));
- NUTS_TRUE(sa.s_in.sa_family == NNG_AF_INET);
- NUTS_TRUE(sa.s_in.sa_port != 0);
- NUTS_TRUE(sa.s_in.sa_addr = nuts_be32(0x7f000001));
NUTS_PASS(nng_dialer_create_url(&d, s2, url));
NUTS_PASS(nng_dialer_set_tls(d, c2));
// NUTS_PASS(nng_dialer_start(d, NNG_FLAG_NONBLOCK));
@@ -111,7 +106,6 @@ test_dtls_bad_cert_mutual(void)
nng_socket s1;
nng_socket s2;
nng_tls_config *c1, *c2;
- nng_sockaddr sa;
nng_listener l;
nng_dialer d;
const nng_url *url;
@@ -130,10 +124,6 @@ test_dtls_bad_cert_mutual(void)
NUTS_PASS(nng_listener_start(l, 0));
NUTS_PASS(nng_listener_get_url(l, &url));
NUTS_MATCH(nng_url_scheme(url), "dtls");
- NUTS_PASS(nng_listener_get_addr(l, NNG_OPT_LOCADDR, &sa));
- NUTS_TRUE(sa.s_in.sa_family == NNG_AF_INET);
- NUTS_TRUE(sa.s_in.sa_port != 0);
- NUTS_TRUE(sa.s_in.sa_addr = nuts_be32(0x7f000001));
NUTS_PASS(nng_dialer_create_url(&d, s2, url));
NUTS_PASS(nng_dialer_set_tls(d, c2));
// With DTLS we are not guaranteed to get the connection failure.
@@ -151,7 +141,6 @@ test_dtls_cert_mutual(void)
nng_socket s1;
nng_socket s2;
nng_tls_config *c1, *c2;
- nng_sockaddr sa;
nng_listener l;
nng_dialer d;
const nng_url *url;
@@ -170,10 +159,6 @@ test_dtls_cert_mutual(void)
NUTS_PASS(nng_listener_start(l, 0));
NUTS_PASS(nng_listener_get_url(l, &url));
NUTS_MATCH(nng_url_scheme(url), "dtls");
- NUTS_PASS(nng_listener_get_addr(l, NNG_OPT_LOCADDR, &sa));
- NUTS_TRUE(sa.s_in.sa_family == NNG_AF_INET);
- NUTS_TRUE(sa.s_in.sa_port != 0);
- NUTS_TRUE(sa.s_in.sa_addr = nuts_be32(0x7f000001));
NUTS_PASS(nng_dialer_create_url(&d, s2, url));
NUTS_PASS(nng_dialer_set_tls(d, c2));
NUTS_PASS(nng_dialer_start(d, 0));
@@ -598,7 +583,6 @@ test_dtls_pipe_details(void)
nng_socket s1;
nng_socket s2;
nng_tls_config *c1, *c2;
- nng_sockaddr sa;
nng_listener l;
nng_dialer d;
nng_msg *msg;
@@ -619,10 +603,6 @@ test_dtls_pipe_details(void)
NUTS_PASS(nng_listener_start(l, 0));
NUTS_PASS(nng_listener_get_url(l, &url));
NUTS_MATCH(nng_url_scheme(url), "dtls");
- NUTS_PASS(nng_listener_get_addr(l, NNG_OPT_LOCADDR, &sa));
- NUTS_TRUE(sa.s_in.sa_family == NNG_AF_INET);
- NUTS_TRUE(sa.s_in.sa_port != 0);
- NUTS_TRUE(sa.s_in.sa_addr = nuts_be32(0x7f000001));
NUTS_PASS(nng_dialer_create_url(&d, s2, url));
NUTS_PASS(nng_dialer_set_tls(d, c2));
NUTS_PASS(nng_dialer_start(d, 0));
diff --git a/src/sp/transport/inproc/inproc.c b/src/sp/transport/inproc/inproc.c
index cf44145a..dc95e1e4 100644
--- a/src/sp/transport/inproc/inproc.c
+++ b/src/sp/transport/inproc/inproc.c
@@ -609,10 +609,6 @@ static const nni_option inproc_ep_options[] = {
.o_name = NNG_OPT_LOCADDR,
.o_get = inproc_ep_get_addr,
},
- {
- .o_name = NNG_OPT_REMADDR,
- .o_get = inproc_ep_get_addr,
- },
// terminate list
{
.o_name = NULL,
diff --git a/src/sp/transport/ipc/ipc_test.c b/src/sp/transport/ipc/ipc_test.c
index 30ac6fb3..3131e774 100644
--- a/src/sp/transport/ipc/ipc_test.c
+++ b/src/sp/transport/ipc/ipc_test.c
@@ -69,10 +69,7 @@ test_ipc_dialer_properties(void)
NUTS_PASS(nng_dial(s, addr, &d, NNG_FLAG_NONBLOCK));
// Dialers don't have local addresses.
NUTS_FAIL(nng_dialer_get_addr(d, NNG_OPT_LOCADDR, &sa), NNG_ENOTSUP);
-
NUTS_FAIL(nng_dialer_set_addr(d, NNG_OPT_LOCADDR, &sa), NNG_ENOTSUP);
- NUTS_PASS(nng_dialer_get_addr(d, NNG_OPT_REMADDR, &sa));
- NUTS_TRUE(sa.s_family == NNG_AF_IPC);
z = 8192;
NUTS_PASS(nng_dialer_set_size(d, NNG_OPT_RECVMAXSZ, z));
@@ -126,19 +123,13 @@ test_ipc_listener_properties(void)
{
nng_socket s;
nng_listener l;
- nng_sockaddr sa;
size_t z;
char *addr;
NUTS_ADDR(addr, "ipc");
NUTS_OPEN(s);
NUTS_PASS(nng_listen(s, addr, &l, 0));
- NUTS_PASS(nng_listener_get_addr(l, NNG_OPT_LOCADDR, &sa));
- NUTS_TRUE(sa.s_ipc.sa_family == NNG_AF_IPC);
- NUTS_MATCH(sa.s_ipc.sa_path, addr + strlen("ipc://"));
- NUTS_FAIL(
- nng_listener_set_addr(l, NNG_OPT_LOCADDR, &sa), NNG_EREADONLY);
z = 8192;
NUTS_PASS(nng_listener_set_size(l, NNG_OPT_RECVMAXSZ, z));
z = 0;
@@ -419,8 +410,8 @@ test_abstract_sockets(void)
NUTS_OPEN(s1);
NUTS_OPEN(s2);
NUTS_MARRY_EX(s1, s2, addr, &p1, &p2);
- NUTS_PASS(nng_pipe_get_addr(p1, NNG_OPT_REMADDR, &sa1));
- NUTS_PASS(nng_pipe_get_addr(p2, NNG_OPT_LOCADDR, &sa2));
+ NUTS_PASS(nng_pipe_peer_addr(p1, &sa1));
+ NUTS_PASS(nng_pipe_self_addr(p2, &sa2));
NUTS_TRUE(sa1.s_family == sa2.s_family);
NUTS_TRUE(sa1.s_family == NNG_AF_ABSTRACT);
NUTS_TRUE(sa1.s_abstract.sa_len == strlen(addr) - strlen(prefix));
@@ -435,55 +426,6 @@ test_abstract_sockets(void)
}
void
-test_abstract_auto_bind(void)
-{
-#ifdef NNG_HAVE_ABSTRACT_SOCKETS
- nng_socket s1;
- nng_socket s2;
- char addr[40];
- char name[12];
- nng_sockaddr sa;
- nng_listener l;
- size_t len;
-
- snprintf(addr, sizeof(addr), "abstract://");
-
- NUTS_OPEN(s1);
- NUTS_OPEN(s2);
- NUTS_PASS(nng_socket_set_ms(s1, NNG_OPT_SENDTIMEO, 1000));
- NUTS_PASS(nng_socket_set_ms(s2, NNG_OPT_SENDTIMEO, 1000));
- NUTS_PASS(nng_socket_set_ms(s1, NNG_OPT_RECVTIMEO, 1000));
- NUTS_PASS(nng_socket_set_ms(s2, NNG_OPT_RECVTIMEO, 1000));
- NUTS_PASS(nng_listen(s1, addr, &l, 0));
-
- NUTS_PASS(nng_listener_get_addr(l, NNG_OPT_LOCADDR, &sa));
- // Under linux there are either 8 or 5 hex characters.
- NUTS_TRUE(sa.s_family == NNG_AF_ABSTRACT);
- NUTS_TRUE(sa.s_abstract.sa_len < 10);
-
- len = sa.s_abstract.sa_len;
- memcpy(name, sa.s_abstract.sa_name, len);
- name[len] = '\0';
- NUTS_TRUE(strlen(name) == len);
-
- (void) snprintf(addr, sizeof(addr), "abstract://%s", name);
- NUTS_PASS(nng_dial(s2, addr, NULL, 0));
-
- // first send the ping
- NUTS_SEND(s1, "ping");
- NUTS_RECV(s2, "ping");
-
- NUTS_SEND(s2, "pong");
- NUTS_RECV(s1, "pong");
-
- NUTS_CLOSE(s1);
- NUTS_CLOSE(s2);
-#else
- NUTS_SKIP("No abstract sockets.");
-#endif
-}
-
-void
test_abstract_too_long(void)
{
#ifdef NNG_HAVE_ABSTRACT_SOCKETS
@@ -518,7 +460,6 @@ test_abstract_null(void)
char name[40];
char rng[20];
- nng_sockaddr sa;
nng_listener l;
size_t len;
@@ -534,18 +475,6 @@ test_abstract_null(void)
NUTS_PASS(nng_socket_set_ms(s2, NNG_OPT_RECVTIMEO, 1000));
NUTS_PASS(nng_listen(s1, addr, &l, 0));
- NUTS_PASS(nng_listener_get_addr(l, NNG_OPT_LOCADDR, &sa));
- // Under linux there are either 8 or 5 hex characters.
- NUTS_TRUE(sa.s_family == NNG_AF_ABSTRACT);
- NUTS_TRUE(sa.s_abstract.sa_len < 32);
- len = sa.s_abstract.sa_len;
- NUTS_TRUE(len == 20);
- NUTS_TRUE(sa.s_abstract.sa_name[0] == 'a');
- NUTS_TRUE(sa.s_abstract.sa_name[1] == '\0');
- NUTS_TRUE(sa.s_abstract.sa_name[2] == 'b');
- NUTS_TRUE(sa.s_abstract.sa_name[3] == '_');
- NUTS_TRUE(memcmp(&sa.s_abstract.sa_name[4], rng, 16) == 0);
-
NUTS_PASS(nng_dial(s2, addr, NULL, 0));
// first send the ping
@@ -599,8 +528,8 @@ test_unix_alias(void)
NUTS_TRUE(nng_msg_len(msg) == 5);
NUTS_MATCH(nng_msg_body(msg), "ping");
p = nng_msg_get_pipe(msg);
- NUTS_PASS(nng_pipe_get_addr(p, NNG_OPT_REMADDR, &sa1));
- NUTS_PASS(nng_pipe_get_addr(p, NNG_OPT_REMADDR, &sa2));
+ NUTS_PASS(nng_pipe_peer_addr(p, &sa1));
+ NUTS_PASS(nng_pipe_self_addr(p, &sa2));
NUTS_TRUE(sa1.s_family == sa2.s_family);
NUTS_TRUE(sa1.s_family == NNG_AF_IPC);
NUTS_MATCH(sa1.s_ipc.sa_path, sa2.s_ipc.sa_path);
@@ -704,7 +633,6 @@ TEST_LIST = {
{ "ipc listen duplicate", test_ipc_listen_duplicate },
{ "ipc listen accept cancel", test_ipc_listen_accept_cancel },
{ "ipc abstract sockets", test_abstract_sockets },
- { "ipc abstract auto bind", test_abstract_auto_bind },
{ "ipc abstract name too long", test_abstract_too_long },
{ "ipc abstract embedded null", test_abstract_null },
{ "ipc unix alias", test_unix_alias },
diff --git a/src/sp/transport/socket/sockfd_test.c b/src/sp/transport/socket/sockfd_test.c
index ccd67587..56b77c83 100644
--- a/src/sp/transport/socket/sockfd_test.c
+++ b/src/sp/transport/socket/sockfd_test.c
@@ -350,7 +350,7 @@ test_sockfd_close_peer(void)
}
void
-test_sockfd_listener_sockaddr(void)
+test_sockfd_listener_no_port(void)
{
#ifdef NNG_HAVE_SOCKETPAIR
// this test verifies that closing a socket peer
@@ -358,14 +358,14 @@ test_sockfd_listener_sockaddr(void)
int fds[2];
nng_socket s0;
nng_listener l;
- nng_sockaddr sa;
+ int port;
NUTS_PASS(nng_socket_pair(fds));
NUTS_OPEN(s0);
NUTS_PASS(nng_listen(s0, "socket://", &l, 0));
NUTS_PASS(nng_listener_set_int(l, NNG_OPT_SOCKET_FD, fds[0]));
- NUTS_PASS(nng_listener_get_addr(l, NNG_OPT_LOCADDR, &sa));
- NUTS_ASSERT(sa.s_family == NNG_AF_UNSPEC);
+ NUTS_FAIL(
+ nng_listener_get_int(l, NNG_OPT_BOUND_PORT, &port), NNG_ENOTSUP);
close(fds[1]);
NUTS_CLOSE(s0);
#else
@@ -401,9 +401,9 @@ test_sockfd_pipe_sockaddr(void)
NUTS_SEND(s0, "something");
NUTS_PASS(nng_recvmsg(s1, &msg, 0));
p = nng_msg_get_pipe(msg);
- NUTS_PASS(nng_pipe_get_addr(p, NNG_OPT_LOCADDR, &sa));
+ NUTS_PASS(nng_pipe_self_addr(p, &sa));
NUTS_ASSERT(sa.s_family == NNG_AF_UNSPEC);
- NUTS_PASS(nng_pipe_get_addr(p, NNG_OPT_REMADDR, &sa));
+ NUTS_PASS(nng_pipe_peer_addr(p, &sa));
NUTS_ASSERT(sa.s_family == NNG_AF_UNSPEC);
NUTS_CLOSE(s0);
NUTS_CLOSE(s1);
@@ -574,7 +574,7 @@ NUTS_TESTS = {
{ "socket exchange large", test_sfd_large },
{ "socket close pending", test_sockfd_close_pending },
{ "socket close peer", test_sockfd_close_peer },
- { "socket listener address", test_sockfd_listener_sockaddr },
+ { "socket listener no port", test_sockfd_listener_no_port },
{ "socket pipe address", test_sockfd_pipe_sockaddr },
{ "socket pipe peer id", test_sockfd_pipe_peer },
{ "socket listen full", test_sfd_listen_full },
diff --git a/src/sp/transport/tcp/tcp.c b/src/sp/transport/tcp/tcp.c
index 759bc320..3e837d3f 100644
--- a/src/sp/transport/tcp/tcp.c
+++ b/src/sp/transport/tcp/tcp.c
@@ -337,14 +337,9 @@ tcptran_pipe_recv_cb(void *arg)
// Make sure the message payload is not too big. If it is
// the caller will shut down the pipe.
if ((len > p->rcvmax) && (p->rcvmax > 0)) {
- nng_sockaddr_storage ss;
- nng_sockaddr *sa = (nng_sockaddr *) &ss;
- char peername[64] = "unknown";
- if ((rv = nng_stream_get_addr(
- p->conn, NNG_OPT_REMADDR, sa)) == 0) {
- (void) nng_str_sockaddr(
- sa, peername, sizeof(peername));
- }
+ char peername[NNG_MAXADDRSTRLEN];
+ (void) nng_str_sockaddr(nng_stream_peer_addr(p->conn),
+ peername, sizeof(peername));
nng_log_warn("NNG-RCVMAX",
"Oversize message of %lu bytes (> %lu) "
"on socket<%u> pipe<%u> from TCP %s",
diff --git a/src/sp/transport/tcp/tcp_test.c b/src/sp/transport/tcp/tcp_test.c
index 9d3d70f3..5f875e49 100644
--- a/src/sp/transport/tcp/tcp_test.c
+++ b/src/sp/transport/tcp/tcp_test.c
@@ -41,10 +41,10 @@ test_tcp_port_zero_bind(void)
{
nng_socket s1;
nng_socket s2;
- nng_sockaddr sa;
nng_listener l;
const nng_url *u;
char addr[NNG_MAXADDRSTRLEN];
+ int port;
NUTS_OPEN(s1);
NUTS_OPEN(s2);
@@ -53,10 +53,9 @@ test_tcp_port_zero_bind(void)
NUTS_MATCH(nng_url_scheme(u), "tcp");
nng_url_sprintf(addr, sizeof(addr), u);
NUTS_TRUE(memcmp(addr, "tcp://", 6) == 0);
- NUTS_PASS(nng_listener_get_addr(l, NNG_OPT_LOCADDR, &sa));
- NUTS_TRUE(sa.s_in.sa_family == NNG_AF_INET);
- NUTS_TRUE(sa.s_in.sa_port != 0);
- NUTS_TRUE(sa.s_in.sa_addr = nuts_be32(0x7f000001));
+ NUTS_PASS(nng_listener_get_int(l, NNG_OPT_BOUND_PORT, &port));
+ NUTS_TRUE(port > 0);
+ NUTS_TRUE(port <= 0xffff);
NUTS_PASS(nng_dial(s2, addr, NULL, 0));
NUTS_CLOSE(s2);
NUTS_CLOSE(s1);
@@ -205,25 +204,22 @@ static void
check_props_v4(nng_msg *msg)
{
nng_pipe p;
- size_t z;
nng_sockaddr la;
nng_sockaddr ra;
bool b;
p = nng_msg_get_pipe(msg);
NUTS_TRUE(nng_pipe_id(p) > 0);
- NUTS_PASS(nng_pipe_get_addr(p, NNG_OPT_LOCADDR, &la));
- NUTS_FAIL(nng_pipe_get_size(p, NNG_OPT_LOCADDR, &z), NNG_EBADTYPE);
+ NUTS_PASS(nng_pipe_self_addr(p, &la));
NUTS_TRUE(la.s_family == NNG_AF_INET);
NUTS_TRUE(la.s_in.sa_port != 0);
NUTS_TRUE(la.s_in.sa_addr == nuts_be32(0x7f000001));
- NUTS_PASS(nng_pipe_get_addr(p, NNG_OPT_REMADDR, &ra));
+ NUTS_PASS(nng_pipe_peer_addr(p, &ra));
NUTS_TRUE(ra.s_family == NNG_AF_INET);
NUTS_TRUE(ra.s_in.sa_port != 0);
NUTS_TRUE(ra.s_in.sa_addr == nuts_be32(0x7f000001));
NUTS_TRUE(ra.s_in.sa_port != la.s_in.sa_port);
- NUTS_FAIL(nng_pipe_get_size(p, NNG_OPT_REMADDR, &z), NNG_EBADTYPE);
NUTS_PASS(nng_pipe_get_bool(p, NNG_OPT_TCP_KEEPALIVE, &b));
NUTS_TRUE(b == false); // default
@@ -239,7 +235,6 @@ void
check_props_v6(nng_msg *msg)
{
nng_pipe p;
- size_t z;
nng_sockaddr la;
nng_sockaddr ra;
bool b;
@@ -247,18 +242,16 @@ check_props_v6(nng_msg *msg)
p = nng_msg_get_pipe(msg);
NUTS_TRUE(nng_pipe_id(p) > 0);
- NUTS_PASS(nng_pipe_get_addr(p, NNG_OPT_LOCADDR, &la));
- NUTS_FAIL(nng_pipe_get_size(p, NNG_OPT_LOCADDR, &z), NNG_EBADTYPE);
+ NUTS_PASS(nng_pipe_self_addr(p, &la));
NUTS_TRUE(la.s_family == NNG_AF_INET6);
NUTS_TRUE(la.s_in6.sa_port != 0);
NUTS_TRUE(memcmp(la.s_in6.sa_addr, self, 16) == 0);
- NUTS_PASS(nng_pipe_get_addr(p, NNG_OPT_REMADDR, &ra));
+ NUTS_PASS(nng_pipe_peer_addr(p, &ra));
NUTS_TRUE(ra.s_family == NNG_AF_INET6);
NUTS_TRUE(ra.s_in6.sa_port != 0);
NUTS_TRUE(memcmp(ra.s_in6.sa_addr, self, 16) == 0);
NUTS_TRUE(ra.s_in6.sa_port != la.s_in6.sa_port);
- NUTS_FAIL(nng_pipe_get_size(p, NNG_OPT_REMADDR, &z), NNG_EBADTYPE);
NUTS_PASS(nng_pipe_get_bool(p, NNG_OPT_TCP_KEEPALIVE, &b));
NUTS_TRUE(b == false); // default
diff --git a/src/sp/transport/tls/tls.c b/src/sp/transport/tls/tls.c
index 5086a942..a4e35b36 100644
--- a/src/sp/transport/tls/tls.c
+++ b/src/sp/transport/tls/tls.c
@@ -13,6 +13,7 @@
#include <string.h>
#include "../../../core/nng_impl.h"
+#include "nng/nng.h"
// TLS over TCP transport. Platform specific TCP operations must be
// supplied as well, and uses the supplemental TLS v1.2 code. It is not
@@ -343,20 +344,15 @@ tlstran_pipe_recv_cb(void *arg)
// Make sure the message payload is not too big. If it is
// the caller will shut down the pipe.
if ((len > p->rcvmax) && (p->rcvmax > 0)) {
- nng_sockaddr_storage ss;
- nng_sockaddr *sa = (nng_sockaddr *) &ss;
- char peername[64] = "unknown";
- if ((rv = nng_stream_get_addr(
- p->tls, NNG_OPT_REMADDR, sa)) == 0) {
- (void) nng_str_sockaddr(
- sa, peername, sizeof(peername));
- }
+ char peer[NNG_MAXADDRSTRLEN];
+
nng_log_warn("NNG-RCVMAX",
"Oversize message of %lu bytes (> %lu) "
"on socket<%u> pipe<%u> from TLS %s",
(unsigned long) len, (unsigned long) p->rcvmax,
nni_pipe_sock_id(p->npipe), nni_pipe_id(p->npipe),
- peername);
+ nng_str_sockaddr(nng_stream_peer_addr(p->tls),
+ peer, sizeof(peer)));
rv = NNG_EMSGSIZE;
goto recv_error;
}
diff --git a/src/sp/transport/tls/tls_tran_test.c b/src/sp/transport/tls/tls_tran_test.c
index e32d4b09..2db0979f 100644
--- a/src/sp/transport/tls/tls_tran_test.c
+++ b/src/sp/transport/tls/tls_tran_test.c
@@ -75,7 +75,6 @@ test_tls_port_zero_bind(void)
nng_socket s1;
nng_socket s2;
nng_tls_config *c1, *c2;
- nng_sockaddr sa;
nng_listener l;
nng_dialer d;
const nng_url *url;
@@ -90,10 +89,6 @@ test_tls_port_zero_bind(void)
NUTS_PASS(nng_listener_start(l, 0));
NUTS_PASS(nng_listener_get_url(l, &url));
NUTS_MATCH(nng_url_scheme(url), "tls+tcp");
- NUTS_PASS(nng_listener_get_addr(l, NNG_OPT_LOCADDR, &sa));
- NUTS_TRUE(sa.s_in.sa_family == NNG_AF_INET);
- NUTS_TRUE(sa.s_in.sa_port != 0);
- NUTS_TRUE(sa.s_in.sa_addr = nuts_be32(0x7f000001));
NUTS_PASS(nng_dialer_create_url(&d, s2, url));
NUTS_PASS(nng_dialer_set_tls(d, c2));
NUTS_PASS(nng_dialer_start(d, 0));
@@ -109,7 +104,6 @@ test_tls_bad_cert_mutual(void)
nng_socket s1;
nng_socket s2;
nng_tls_config *c1, *c2;
- nng_sockaddr sa;
nng_listener l;
nng_dialer d;
const nng_url *url;
@@ -128,10 +122,6 @@ test_tls_bad_cert_mutual(void)
NUTS_PASS(nng_listener_start(l, 0));
NUTS_PASS(nng_listener_get_url(l, &url));
NUTS_MATCH(nng_url_scheme(url), "tls+tcp");
- NUTS_PASS(nng_listener_get_addr(l, NNG_OPT_LOCADDR, &sa));
- NUTS_TRUE(sa.s_in.sa_family == NNG_AF_INET);
- NUTS_TRUE(sa.s_in.sa_port != 0);
- NUTS_TRUE(sa.s_in.sa_addr = nuts_be32(0x7f000001));
NUTS_PASS(nng_dialer_create_url(&d, s2, url));
NUTS_PASS(nng_dialer_set_tls(d, c2));
#ifdef NNG_TLS_ENGINE_MBEDTLS
@@ -153,7 +143,6 @@ test_tls_cert_mutual(void)
nng_socket s1;
nng_socket s2;
nng_tls_config *c1, *c2;
- nng_sockaddr sa;
nng_listener l;
nng_dialer d;
const nng_url *url;
@@ -172,10 +161,6 @@ test_tls_cert_mutual(void)
NUTS_PASS(nng_listener_start(l, 0));
NUTS_PASS(nng_listener_get_url(l, &url));
NUTS_MATCH(nng_url_scheme(url), "tls+tcp");
- NUTS_PASS(nng_listener_get_addr(l, NNG_OPT_LOCADDR, &sa));
- NUTS_TRUE(sa.s_in.sa_family == NNG_AF_INET);
- NUTS_TRUE(sa.s_in.sa_port != 0);
- NUTS_TRUE(sa.s_in.sa_addr = nuts_be32(0x7f000001));
NUTS_PASS(nng_dialer_create_url(&d, s2, url));
NUTS_PASS(nng_dialer_set_tls(d, c2));
NUTS_PASS(nng_dialer_start(d, 0));
@@ -192,7 +177,6 @@ test_tls_pipe_details(void)
nng_socket s1;
nng_socket s2;
nng_tls_config *c1, *c2;
- nng_sockaddr sa;
nng_listener l;
nng_dialer d;
nng_msg *msg;
@@ -213,10 +197,6 @@ test_tls_pipe_details(void)
NUTS_PASS(nng_listener_start(l, 0));
NUTS_PASS(nng_listener_get_url(l, &url));
NUTS_MATCH(nng_url_scheme(url), "tls+tcp");
- NUTS_PASS(nng_listener_get_addr(l, NNG_OPT_LOCADDR, &sa));
- NUTS_TRUE(sa.s_in.sa_family == NNG_AF_INET);
- NUTS_TRUE(sa.s_in.sa_port != 0);
- NUTS_TRUE(sa.s_in.sa_addr = nuts_be32(0x7f000001));
NUTS_PASS(nng_dialer_create_url(&d, s2, url));
NUTS_PASS(nng_dialer_set_tls(d, c2));
NUTS_PASS(nng_dialer_start(d, 0));
diff --git a/src/sp/transport/udp/udp.c b/src/sp/transport/udp/udp.c
index 02eb088a..016c222b 100644
--- a/src/sp/transport/udp/udp.c
+++ b/src/sp/transport/udp/udp.c
@@ -993,28 +993,12 @@ udp_pipe_get_recvmax(void *arg, void *v, size_t *szp, nni_type t)
return (rv);
}
-static nng_err
-udp_pipe_get_remaddr(void *arg, void *v, size_t *szp, nni_type t)
-{
- udp_pipe *p = arg;
- udp_ep *ep = p->ep;
- nng_err rv;
- nni_mtx_lock(&ep->mtx);
- rv = nni_copyout_sockaddr(&p->peer_addr, v, szp, t);
- nni_mtx_unlock(&ep->mtx);
- return (rv);
-}
-
static nni_option udp_pipe_options[] = {
{
.o_name = NNG_OPT_RECVMAXSZ,
.o_get = udp_pipe_get_recvmax,
},
{
- .o_name = NNG_OPT_REMADDR,
- .o_get = udp_pipe_get_remaddr,
- },
- {
.o_name = NULL,
},
};
@@ -1547,22 +1531,6 @@ udp_ep_get_locaddr(void *arg, void *v, size_t *szp, nni_opt_type t)
}
static nng_err
-udp_ep_get_remaddr(void *arg, void *v, size_t *szp, nni_opt_type t)
-{
- udp_ep *ep = arg;
- nng_err rv;
- nng_sockaddr sa;
-
- if (!ep->dialer) {
- return (NNG_ENOTSUP);
- }
- sa = ep->peer_sa;
-
- rv = nni_copyout_sockaddr(&sa, v, szp, t);
- return (rv);
-}
-
-static nng_err
udp_ep_get_recvmaxsz(void *arg, void *v, size_t *szp, nni_opt_type t)
{
udp_ep *ep = arg;
@@ -1736,10 +1704,6 @@ static const nni_option udp_ep_opts[] = {
.o_get = udp_ep_get_locaddr,
},
{
- .o_name = NNG_OPT_REMADDR,
- .o_get = udp_ep_get_remaddr,
- },
- {
.o_name = NNG_OPT_BOUND_PORT,
.o_get = udp_ep_get_port,
},
diff --git a/src/sp/transport/udp/udp_tran_test.c b/src/sp/transport/udp/udp_tran_test.c
index 33517246..45203df1 100644
--- a/src/sp/transport/udp/udp_tran_test.c
+++ b/src/sp/transport/udp/udp_tran_test.c
@@ -60,7 +60,6 @@ test_udp_port_zero_bind(void)
{
nng_socket s1;
nng_socket s2;
- nng_sockaddr sa;
nng_listener l;
nng_dialer d;
int port;
@@ -76,10 +75,6 @@ test_udp_port_zero_bind(void)
NUTS_MATCH(nng_url_scheme(u1), "udp");
NUTS_MATCH(nng_url_hostname(u1), "127.0.0.1");
NUTS_MATCH(nng_url_path(u1), "");
- NUTS_PASS(nng_listener_get_addr(l, NNG_OPT_LOCADDR, &sa));
- NUTS_TRUE(sa.s_in.sa_family == NNG_AF_INET);
- NUTS_TRUE(sa.s_in.sa_port == nuts_be16(nng_url_port(u1)));
- NUTS_TRUE(sa.s_in.sa_addr == nuts_be32(0x7f000001));
NUTS_PASS(nng_dial_url(s2, u1, &d, 0));
NUTS_PASS(nng_dialer_get_url(d, &u2));
NUTS_MATCH(nng_url_scheme(u1), nng_url_scheme(u2));
@@ -465,9 +460,6 @@ test_udp_pipe(void)
size_t sz;
char *addr;
nng_msg *msg;
- nng_pipe p;
- nng_sockaddr sa0;
- nng_sockaddr sa1;
NUTS_ADDR(addr, "udp4");
@@ -478,7 +470,6 @@ test_udp_pipe(void)
NUTS_PASS(nng_listener_get_size(l, NNG_OPT_UDP_COPY_MAX, &sz));
NUTS_TRUE(sz == 100);
NUTS_PASS(nng_listener_start(l, 0));
- NUTS_PASS(nng_listener_get_addr(l, NNG_OPT_LOCADDR, &sa0));
NUTS_OPEN(s1);
NUTS_PASS(nng_dial(s1, addr, NULL, 0));
@@ -488,10 +479,7 @@ test_udp_pipe(void)
NUTS_PASS(nng_msg_alloc(&msg, 0));
NUTS_PASS(nng_sendmsg(s0, msg, 0));
NUTS_PASS(nng_recvmsg(s1, &msg, 0));
- p = nng_msg_get_pipe(msg);
- NUTS_PASS(nng_pipe_get_addr(p, NNG_OPT_REMADDR, &sa1));
- NUTS_TRUE(memcmp(&sa0.s_in, &sa1.s_in, sizeof(sa0.s_in)) == 0);
nng_msg_free(msg);
NUTS_CLOSE(s0);
NUTS_CLOSE(s1);
@@ -506,7 +494,6 @@ test_udp_reconnect_dialer(void)
nng_dialer d;
char *addr;
nng_msg *msg;
- nng_sockaddr sa0;
NUTS_LOGGING();
NUTS_ADDR(addr, "udp4");
@@ -519,7 +506,6 @@ test_udp_reconnect_dialer(void)
NUTS_PASS(nng_socket_set_ms(s0, NNG_OPT_SENDTIMEO, 2000));
NUTS_PASS(nng_listener_create(&l, s0, addr));
NUTS_PASS(nng_listener_start(l, 0));
- NUTS_PASS(nng_listener_get_addr(l, NNG_OPT_LOCADDR, &sa0));
NUTS_PASS(nng_sub0_open(&s1));
NUTS_PASS(nng_sub0_socket_subscribe(s1, "", 0));
diff --git a/src/sp/transport/ws/ws_test.c b/src/sp/transport/ws/ws_test.c
index 6f41fe99..c69e5845 100644
--- a/src/sp/transport/ws/ws_test.c
+++ b/src/sp/transport/ws/ws_test.c
@@ -205,25 +205,22 @@ static void
check_props_v4(nng_msg *msg)
{
nng_pipe p;
- size_t z;
nng_sockaddr la;
nng_sockaddr ra;
bool b;
p = nng_msg_get_pipe(msg);
NUTS_TRUE(nng_pipe_id(p) > 0);
- NUTS_PASS(nng_pipe_get_addr(p, NNG_OPT_LOCADDR, &la));
- NUTS_FAIL(nng_pipe_get_size(p, NNG_OPT_LOCADDR, &z), NNG_EBADTYPE);
+ NUTS_PASS(nng_pipe_self_addr(p, &la));
NUTS_TRUE(la.s_family == NNG_AF_INET);
NUTS_TRUE(la.s_in.sa_port != 0);
NUTS_TRUE(la.s_in.sa_addr == nuts_be32(0x7f000001));
- NUTS_PASS(nng_pipe_get_addr(p, NNG_OPT_REMADDR, &ra));
+ NUTS_PASS(nng_pipe_peer_addr(p, &ra));
NUTS_TRUE(ra.s_family == NNG_AF_INET);
NUTS_TRUE(ra.s_in.sa_port != 0);
NUTS_TRUE(ra.s_in.sa_addr == nuts_be32(0x7f000001));
NUTS_TRUE(ra.s_in.sa_port != la.s_in.sa_port);
- NUTS_FAIL(nng_pipe_get_size(p, NNG_OPT_REMADDR, &z), NNG_EBADTYPE);
NUTS_PASS(nng_pipe_get_bool(p, NNG_OPT_TCP_KEEPALIVE, &b));
NUTS_TRUE(b == false); // default
diff --git a/src/sp/transport/ws/wss_test.c b/src/sp/transport/ws/wss_test.c
index 1686090b..0654c809 100644
--- a/src/sp/transport/ws/wss_test.c
+++ b/src/sp/transport/ws/wss_test.c
@@ -75,9 +75,9 @@ test_wss_port_zero_bind(void)
nng_socket s1;
nng_socket s2;
nng_tls_config *c1, *c2;
- nng_sockaddr sa;
nng_listener l;
nng_dialer d;
+ int port;
const nng_url *url;
c1 = wss_server_config();
@@ -88,11 +88,10 @@ test_wss_port_zero_bind(void)
NUTS_PASS(nng_listener_set_tls(l, c1));
NUTS_PASS(nng_listener_start(l, 0));
NUTS_PASS(nng_listener_get_url(l, &url));
+ NUTS_PASS(nng_listener_get_int(l, NNG_OPT_BOUND_PORT, &port));
+ NUTS_TRUE(port > 0);
+ NUTS_TRUE(port <= 65535);
NUTS_MATCH(nng_url_scheme(url), "wss");
- NUTS_PASS(nng_listener_get_addr(l, NNG_OPT_LOCADDR, &sa));
- NUTS_TRUE(sa.s_in.sa_family == NNG_AF_INET);
- NUTS_TRUE(sa.s_in.sa_port != 0);
- NUTS_TRUE(sa.s_in.sa_addr = nuts_be32(0x7f000001));
NUTS_PASS(nng_dialer_create_url(&d, s2, url));
NUTS_PASS(nng_dialer_set_tls(d, c2));
NUTS_PASS(nng_dialer_start(d, 0));
@@ -108,7 +107,6 @@ test_wss_bad_cert_mutual(void)
nng_socket s1;
nng_socket s2;
nng_tls_config *c1, *c2;
- nng_sockaddr sa;
nng_listener l;
nng_dialer d;
const nng_url *url;
@@ -128,10 +126,6 @@ test_wss_bad_cert_mutual(void)
NUTS_PASS(nng_listener_start(l, 0));
NUTS_PASS(nng_listener_get_url(l, &url));
NUTS_MATCH(nng_url_scheme(url), "wss");
- NUTS_PASS(nng_listener_get_addr(l, NNG_OPT_LOCADDR, &sa));
- NUTS_TRUE(sa.s_in.sa_family == NNG_AF_INET);
- NUTS_TRUE(sa.s_in.sa_port != 0);
- NUTS_TRUE(sa.s_in.sa_addr = nuts_be32(0x7f000001));
NUTS_PASS(nng_dialer_create_url(&d, s2, url));
NUTS_PASS(nng_dialer_set_tls(d, c2));
#ifdef NNG_TLS_ENGINE_MBEDTLS
@@ -153,7 +147,6 @@ test_wss_cert_mutual(void)
nng_socket s1;
nng_socket s2;
nng_tls_config *c1, *c2;
- nng_sockaddr sa;
nng_listener l;
nng_dialer d;
const nng_url *url;
@@ -172,10 +165,6 @@ test_wss_cert_mutual(void)
NUTS_PASS(nng_listener_start(l, 0));
NUTS_PASS(nng_listener_get_url(l, &url));
NUTS_MATCH(nng_url_scheme(url), "wss");
- NUTS_PASS(nng_listener_get_addr(l, NNG_OPT_LOCADDR, &sa));
- NUTS_TRUE(sa.s_in.sa_family == NNG_AF_INET);
- NUTS_TRUE(sa.s_in.sa_port != 0);
- NUTS_TRUE(sa.s_in.sa_addr = nuts_be32(0x7f000001));
NUTS_PASS(nng_dialer_create_url(&d, s2, url));
NUTS_PASS(nng_dialer_set_tls(d, c2));
NUTS_PASS(nng_dialer_start(d, 0));
@@ -387,7 +376,7 @@ test_wss_pipe_details(void)
nng_socket s1;
nng_socket s2;
nng_tls_config *c1, *c2;
- nng_sockaddr sa;
+ int port;
nng_listener l;
nng_dialer d;
nng_msg *msg;
@@ -408,10 +397,8 @@ test_wss_pipe_details(void)
NUTS_PASS(nng_listener_start(l, 0));
NUTS_PASS(nng_listener_get_url(l, &url));
NUTS_MATCH(nng_url_scheme(url), "wss");
- NUTS_PASS(nng_listener_get_addr(l, NNG_OPT_LOCADDR, &sa));
- NUTS_TRUE(sa.s_in.sa_family == NNG_AF_INET);
- NUTS_TRUE(sa.s_in.sa_port != 0);
- NUTS_TRUE(sa.s_in.sa_addr = nuts_be32(0x7f000001));
+ NUTS_PASS(nng_listener_get_int(l, NNG_OPT_BOUND_PORT, &port));
+ NUTS_TRUE(port != 0);
NUTS_PASS(nng_dialer_create_url(&d, s2, url));
NUTS_PASS(nng_dialer_set_tls(d, c2));
NUTS_PASS(nng_dialer_start(d, 0));