From eec083d60d972c3fad47b195e4f00691ace65689 Mon Sep 17 00:00:00 2001 From: Garrett D'Amore Date: Fri, 6 Dec 2024 09:11:13 -0800 Subject: url: add nng_url_resolve_port This API exists to support tests and similar cases where port 0 is used to choose a dynamic port. Once the port is bound, and an actual value is known, it can be patched in using this API. --- include/nng/nng.h | 5 +++++ src/core/url.c | 8 ++++++++ 2 files changed, 13 insertions(+) diff --git a/include/nng/nng.h b/include/nng/nng.h index 1061a00b..3397ca53 100644 --- a/include/nng/nng.h +++ b/include/nng/nng.h @@ -1100,6 +1100,11 @@ NNG_DECL const char *nng_url_scheme(const nng_url *); // the scheme. NNG_DECL uint32_t nng_url_port(const nng_url *); +// Update a URL with a zero port to a non-zero port (useful +// after a bind to port 0). Does nothing if the URL's port is not +// zero to start with. +NNG_DECL void nng_url_resolve_port(nng_url *url, uint32_t port); + // hostname part of URL, can be NULL if irerelvant to scheme const char *nng_url_hostname(const nng_url *); diff --git a/src/core/url.c b/src/core/url.c index 530e299c..1b39f809 100644 --- a/src/core/url.c +++ b/src/core/url.c @@ -719,6 +719,14 @@ nng_url_port(const nng_url *url) return (url->u_port); } +void +nng_url_resolve_port(nng_url *url, uint32_t port) +{ + if (url->u_port == 0) { + url->u_port = port; + } +} + const char * nng_url_hostname(const nng_url *url) { -- cgit v1.2.3-70-g09d2