aboutsummaryrefslogtreecommitdiff
path: root/src/supplemental
diff options
context:
space:
mode:
Diffstat (limited to 'src/supplemental')
-rw-r--r--src/supplemental/http/http_public.c8
-rw-r--r--src/supplemental/http/http_server_test.c6
-rw-r--r--src/supplemental/tls/tls_stream.c16
-rw-r--r--src/supplemental/websocket/websocket_test.c63
4 files changed, 39 insertions, 54 deletions
diff --git a/src/supplemental/http/http_public.c b/src/supplemental/http/http_public.c
index c5ace172..8d91109b 100644
--- a/src/supplemental/http/http_public.c
+++ b/src/supplemental/http/http_public.c
@@ -565,14 +565,12 @@ nng_http_server_get_tls(nng_http_server *srv, nng_tls_config **cfg)
}
nng_err
-nng_http_server_get_addr(nng_http_server *srv, nng_sockaddr *addr)
+nng_http_server_get_port(nng_http_server *srv, int *port)
{
#ifdef NNG_SUPP_HTTP
- size_t size = sizeof(nng_sockaddr);
- if (srv == NULL || addr == NULL)
- return NNG_EINVAL;
+ size_t size = sizeof(*port);
return (nni_http_server_get(
- srv, NNG_OPT_LOCADDR, addr, &size, NNI_TYPE_SOCKADDR));
+ srv, NNG_OPT_BOUND_PORT, port, &size, NNI_TYPE_INT32));
#else
NNI_ARG_UNUSED(srv);
NNI_ARG_UNUSED(addr);
diff --git a/src/supplemental/http/http_server_test.c b/src/supplemental/http/http_server_test.c
index d299cb97..19449b9c 100644
--- a/src/supplemental/http/http_server_test.c
+++ b/src/supplemental/http/http_server_test.c
@@ -190,7 +190,7 @@ httpaddrcheck(nng_http *conn, void *arg, nng_aio *aio)
static void
server_setup(struct server_test *st, nng_http_handler *h)
{
- nng_sockaddr sa;
+ int port;
memset(st, 0, sizeof(*st));
NUTS_PASS(nng_url_parse(&st->url, "http://127.0.0.1:0"));
NUTS_PASS(nng_aio_alloc(&st->aio, NULL, NULL));
@@ -200,8 +200,8 @@ server_setup(struct server_test *st, nng_http_handler *h)
NUTS_PASS(nng_http_server_add_handler(st->s, h));
}
NUTS_PASS(nng_http_server_start(st->s));
- NUTS_PASS(nng_http_server_get_addr(st->s, &sa));
- nng_url_resolve_port(st->url, nng_sockaddr_port(&sa));
+ NUTS_PASS(nng_http_server_get_port(st->s, &port));
+ nng_url_resolve_port(st->url, (uint32_t) port);
nng_url_sprintf(st->urlstr, sizeof(st->urlstr), st->url);
NUTS_PASS(nng_http_client_alloc(&st->cli, st->url));
diff --git a/src/supplemental/tls/tls_stream.c b/src/supplemental/tls/tls_stream.c
index d0a1fabd..b523e583 100644
--- a/src/supplemental/tls/tls_stream.c
+++ b/src/supplemental/tls/tls_stream.c
@@ -111,10 +111,10 @@ tls_stream_recv(void *arg, nng_aio *aio)
static void
tls_stream_conn_cb(void *arg)
{
- tls_stream *ts = arg;
- nng_stream *bio;
- int rv;
- nng_sockaddr sa;
+ tls_stream *ts = arg;
+ nng_stream *bio;
+ int rv;
+ const nng_sockaddr *sa;
if ((rv = nni_aio_result(&ts->conn_aio)) != 0) {
nni_aio_finish_error(ts->user_aio, rv);
@@ -123,13 +123,9 @@ tls_stream_conn_cb(void *arg)
}
bio = nni_aio_get_output(&ts->conn_aio, 0);
- if ((rv = nng_stream_get_addr(bio, NNG_OPT_REMADDR, &sa)) != 0) {
- nni_aio_finish_error(ts->user_aio, rv);
- nni_tls_stream_free(ts);
- return;
- };
+ sa = nng_stream_peer_addr(bio);
- if ((rv = nni_tls_start(&ts->conn, &tls_stream_bio, bio, &sa)) != 0) {
+ if ((rv = nni_tls_start(&ts->conn, &tls_stream_bio, bio, sa)) != 0) {
// NB: if this fails, it *will* have set the bio either way.
// So nni_tls_stream_free will also free the bio.
nni_aio_finish_error(ts->user_aio, rv);
diff --git a/src/supplemental/websocket/websocket_test.c b/src/supplemental/websocket/websocket_test.c
index ffce8019..368ef3ec 100644
--- a/src/supplemental/websocket/websocket_test.c
+++ b/src/supplemental/websocket/websocket_test.c
@@ -18,10 +18,8 @@
void
test_websocket_wildcard(void)
{
- nng_stream_dialer *d = NULL;
- nng_stream_listener *l = NULL;
- nng_sockaddr sa1;
- nng_sockaddr sa2;
+ nng_stream_dialer *d = NULL;
+ nng_stream_listener *l = NULL;
nng_aio *daio = NULL;
nng_aio *laio = NULL;
nng_aio *aio1 = NULL;
@@ -32,20 +30,19 @@ test_websocket_wildcard(void)
char buf1[8];
char buf2[8];
char uri[64];
+ const nng_sockaddr *sap1;
+ const nng_sockaddr *sap2;
+ int port;
NUTS_PASS(nng_stream_listener_alloc(&l, "ws://127.0.0.1:0/test"));
NUTS_PASS(nng_stream_listener_listen(l));
- // Let's get the address we're going to use to dial -- also check
- // that it is correct.
- NUTS_PASS(nng_stream_listener_get_addr(l, NNG_OPT_LOCADDR, &sa1));
- NUTS_TRUE(sa1.s_in.sa_port != 0);
- NUTS_TRUE(sa1.s_family == NNG_AF_INET);
- NUTS_TRUE(nuts_be32(sa1.s_in.sa_addr) == 0x7F000001u);
+ // Let's get the port we're going to use to dial.
+ NUTS_PASS(nng_stream_listener_get_int(l, NNG_OPT_BOUND_PORT, &port));
+ NUTS_TRUE(port != 0);
- (void) snprintf(uri, sizeof(uri), "ws://127.0.0.1:%d/test",
- nuts_be16(sa1.s_in.sa_port));
+ (void) snprintf(uri, sizeof(uri), "ws://127.0.0.1:%d/test", port);
NUTS_PASS(nng_stream_dialer_alloc(&d, uri));
NUTS_PASS(nng_aio_alloc(&daio, NULL, NULL));
@@ -71,16 +68,16 @@ test_websocket_wildcard(void)
NUTS_TRUE(c2 != NULL);
// Let's compare the peer addresses
- NUTS_PASS(nng_stream_get_addr(c2, NNG_OPT_REMADDR, &sa2));
- NUTS_TRUE(sa1.s_family == sa2.s_family);
- NUTS_TRUE(sa1.s_in.sa_addr == sa2.s_in.sa_addr);
- NUTS_TRUE(sa1.s_in.sa_port == sa2.s_in.sa_port);
+ sap2 = nng_stream_peer_addr(c2);
+ NUTS_TRUE(sap2->s_family == NNG_AF_INET);
+ NUTS_TRUE(nuts_be32(sap2->s_in.sa_addr) == 0x7F000001u);
+ NUTS_TRUE(sap2->s_in.sa_port != 0);
- NUTS_PASS(nng_stream_get_addr(c1, NNG_OPT_REMADDR, &sa1));
- NUTS_PASS(nng_stream_get_addr(c2, NNG_OPT_LOCADDR, &sa2));
- NUTS_TRUE(sa1.s_family == sa2.s_family);
- NUTS_TRUE(sa1.s_in.sa_addr == sa2.s_in.sa_addr);
- NUTS_TRUE(sa1.s_in.sa_port == sa2.s_in.sa_port);
+ sap1 = nng_stream_peer_addr(c1);
+ sap2 = nng_stream_self_addr(c2);
+ NUTS_TRUE(sap1->s_family == sap2->s_family);
+ NUTS_TRUE(sap1->s_in.sa_addr == sap2->s_in.sa_addr);
+ NUTS_TRUE(sap1->s_in.sa_port == sap2->s_in.sa_port);
// This relies on send completing for for just 5 bytes, and on
// recv doing the same. Technically this isn't/ guaranteed, but
@@ -129,8 +126,6 @@ test_websocket_conn_props(void)
{
nng_stream_dialer *d = NULL;
nng_stream_listener *l = NULL;
- nng_sockaddr sa1;
- nng_sockaddr sa2;
const nng_sockaddr *sap1;
const nng_sockaddr *sap2;
size_t sz;
@@ -186,19 +181,15 @@ test_websocket_conn_props(void)
// Let's compare the peer addresses
sap1 = nng_stream_self_addr(c1);
sap2 = nng_stream_peer_addr(c2);
- NUTS_PASS(nng_stream_get_addr(c1, NNG_OPT_LOCADDR, &sa1));
- NUTS_PASS(nng_stream_get_addr(c2, NNG_OPT_REMADDR, &sa2));
- NUTS_TRUE(sa1.s_family == sa2.s_family);
- NUTS_TRUE(sa1.s_in.sa_addr == sa2.s_in.sa_addr);
- NUTS_TRUE(sa1.s_in.sa_port == sa2.s_in.sa_port);
- NUTS_TRUE(memcmp(sap1, &sa1, sizeof(sa1)) == 0);
- NUTS_TRUE(memcmp(sap2, &sa2, sizeof(sa2)) == 0);
-
- NUTS_PASS(nng_stream_get_addr(c1, NNG_OPT_REMADDR, &sa1));
- NUTS_PASS(nng_stream_get_addr(c2, NNG_OPT_LOCADDR, &sa2));
- NUTS_TRUE(sa1.s_family == sa2.s_family);
- NUTS_TRUE(sa1.s_in.sa_addr == sa2.s_in.sa_addr);
- NUTS_TRUE(sa1.s_in.sa_port == sa2.s_in.sa_port);
+ NUTS_TRUE(sap1->s_family == sap2->s_family);
+ NUTS_TRUE(sap1->s_in.sa_addr == sap2->s_in.sa_addr);
+ NUTS_TRUE(sap1->s_in.sa_port == sap2->s_in.sa_port);
+
+ sap1 = nng_stream_peer_addr(c1);
+ sap2 = nng_stream_self_addr(c2);
+ NUTS_TRUE(sap1->s_family == sap2->s_family);
+ NUTS_TRUE(sap1->s_in.sa_addr == sap2->s_in.sa_addr);
+ NUTS_TRUE(sap1->s_in.sa_port == sap2->s_in.sa_port);
NUTS_PASS(nng_stream_get_bool(c1, NNG_OPT_TCP_NODELAY, &on));
NUTS_TRUE(on == true);