aboutsummaryrefslogtreecommitdiff
path: root/src/sp/transport/tcp
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/transport/tcp
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/transport/tcp')
-rw-r--r--src/sp/transport/tcp/tcp.c11
-rw-r--r--src/sp/transport/tcp/tcp_test.c23
2 files changed, 11 insertions, 23 deletions
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