aboutsummaryrefslogtreecommitdiff
path: root/src/supplemental
diff options
context:
space:
mode:
Diffstat (limited to 'src/supplemental')
-rw-r--r--src/supplemental/http/http_client.c33
-rw-r--r--src/supplemental/http/http_server.c156
-rw-r--r--src/supplemental/tls/tls_common.c129
-rw-r--r--src/supplemental/tls/tls_test.c18
-rw-r--r--src/supplemental/websocket/websocket.c66
-rw-r--r--src/supplemental/websocket/wssfile_test.c4
6 files changed, 185 insertions, 221 deletions
diff --git a/src/supplemental/http/http_client.c b/src/supplemental/http/http_client.c
index b156794c..0fbe3ef9 100644
--- a/src/supplemental/http/http_client.c
+++ b/src/supplemental/http/http_client.c
@@ -1,5 +1,5 @@
//
-// Copyright 2021 Staysail Systems, Inc. <info@staysail.tech>
+// Copyright 2024 Staysail Systems, Inc. <info@staysail.tech>
// Copyright 2018 Capitar IT Group BV <info@capitar.com>
// Copyright 2019 Devolutions <info@devolutions.net>
//
@@ -25,7 +25,7 @@ struct nng_http_client {
nni_list aios;
nni_mtx mtx;
bool closed;
- nni_aio * aio;
+ nni_aio *aio;
nng_stream_dialer *dialer;
};
@@ -42,10 +42,10 @@ static void
http_dial_cb(void *arg)
{
nni_http_client *c = arg;
- nni_aio * aio;
+ nni_aio *aio;
int rv;
- nng_stream * stream;
- nni_http_conn * conn;
+ nng_stream *stream;
+ nni_http_conn *conn;
nni_mtx_lock(&c->mtx);
rv = nni_aio_result(c->aio);
@@ -101,7 +101,7 @@ nni_http_client_init(nni_http_client **cp, const nni_url *url)
int rv;
nni_http_client *c;
nng_url my_url;
- const char * scheme;
+ const char *scheme;
if ((scheme = nni_http_stream_scheme(url->u_scheme)) == NULL) {
return (NNG_EADDRINVAL);
@@ -138,14 +138,13 @@ nni_http_client_init(nni_http_client **cp, const nni_url *url)
int
nni_http_client_set_tls(nni_http_client *c, nng_tls_config *tls)
{
- return (nng_stream_dialer_set_ptr(c->dialer, NNG_OPT_TLS_CONFIG, tls));
+ return (nng_stream_dialer_set_tls(c->dialer, tls));
}
int
nni_http_client_get_tls(nni_http_client *c, nng_tls_config **tlsp)
{
- return (nng_stream_dialer_get_ptr(
- c->dialer, NNG_OPT_TLS_CONFIG, (void **) tlsp));
+ return (nng_stream_dialer_get_tls(c->dialer, tlsp));
}
int
@@ -207,12 +206,12 @@ typedef enum http_txn_state {
} http_txn_state;
typedef struct http_txn {
- nni_aio * aio; // lower level aio
+ nni_aio *aio; // lower level aio
nni_list aios; // upper level aio(s) -- maximum one
nni_http_client *client;
- nni_http_conn * conn;
- nni_http_req * req;
- nni_http_res * res;
+ nni_http_conn *conn;
+ nni_http_req *req;
+ nni_http_res *res;
nni_http_chunks *chunks;
http_txn_state state;
} http_txn;
@@ -246,13 +245,13 @@ http_txn_finish_aios(http_txn *txn, int rv)
static void
http_txn_cb(void *arg)
{
- http_txn * txn = arg;
- const char * str;
- char * end;
+ http_txn *txn = arg;
+ const char *str;
+ char *end;
int rv;
uint64_t len;
nni_iov iov;
- char * dst;
+ char *dst;
size_t sz;
nni_http_chunk *chunk = NULL;
diff --git a/src/supplemental/http/http_server.c b/src/supplemental/http/http_server.c
index 42ff5dd9..ac57cf5b 100644
--- a/src/supplemental/http/http_server.c
+++ b/src/supplemental/http/http_server.c
@@ -1,5 +1,5 @@
//
-// Copyright 2023 Staysail Systems, Inc. <info@staysail.tech>
+// Copyright 2024 Staysail Systems, Inc. <info@staysail.tech>
// Copyright 2018 Capitar IT Group BV <info@capitar.com>
// Copyright 2018 QXSoftware <lh563566994@126.com>
// Copyright 2019 Devolutions <info@devolutions.net>
@@ -24,9 +24,9 @@
struct nng_http_handler {
nni_list_node node;
- char * uri;
- char * method;
- char * host;
+ char *uri;
+ char *method;
+ char *host;
nng_sockaddr host_addr;
bool host_ip;
bool tree;
@@ -35,33 +35,33 @@ struct nng_http_handler {
nni_atomic_bool busy;
size_t maxbody;
bool getbody;
- void * data;
+ void *data;
nni_cb dtor;
void (*cb)(nni_aio *);
};
typedef struct http_sconn {
nni_list_node node;
- nni_http_conn * conn;
- nni_http_server * server;
- nni_http_req * req;
- nni_http_res * res;
+ nni_http_conn *conn;
+ nni_http_server *server;
+ nni_http_req *req;
+ nni_http_res *res;
nni_http_handler *handler; // set if we deferred to read body
nni_http_handler *release; // set if we dispatched handler
bool close;
bool closed;
bool finished;
- nni_aio * cbaio;
- nni_aio * rxaio;
- nni_aio * txaio;
- nni_aio * txdataio;
+ nni_aio *cbaio;
+ nni_aio *rxaio;
+ nni_aio *txaio;
+ nni_aio *txdataio;
nni_reap_node reap;
} http_sconn;
typedef struct http_error {
nni_list_node node;
uint16_t code;
- void * body;
+ void *body;
size_t len;
} http_error;
@@ -75,10 +75,10 @@ struct nng_http_server {
nni_mtx mtx;
bool closed;
bool fini; // if nni_http_server_fini was called
- nni_aio * accaio;
+ nni_aio *accaio;
nng_stream_listener *listener;
int port; // native order
- char * hostname;
+ char *hostname;
nni_list errors;
nni_mtx errors_mtx;
nni_reap_node reap;
@@ -277,7 +277,7 @@ static nni_mtx http_servers_lk = NNI_MTX_INITIALIZER;
static void
http_sc_reap(void *arg)
{
- http_sconn * sc = arg;
+ http_sconn *sc = arg;
nni_http_server *s = sc->server;
NNI_ASSERT(!sc->finished);
sc->finished = true;
@@ -346,7 +346,7 @@ static void
http_sconn_txdatdone(void *arg)
{
http_sconn *sc = arg;
- nni_aio * aio = sc->txdataio;
+ nni_aio *aio = sc->txdataio;
if (nni_aio_result(aio) != 0) {
http_sconn_close(sc);
@@ -370,7 +370,7 @@ static void
http_sconn_txdone(void *arg)
{
http_sconn *sc = arg;
- nni_aio * aio = sc->txaio;
+ nni_aio *aio = sc->txaio;
if (nni_aio_result(aio) != 0) {
http_sconn_close(sc);
@@ -572,21 +572,21 @@ http_handler_host_match(nni_http_handler *h, const char *host)
static void
http_sconn_rxdone(void *arg)
{
- http_sconn * sc = arg;
- nni_http_server * s = sc->server;
- nni_aio * aio = sc->rxaio;
+ http_sconn *sc = arg;
+ nni_http_server *s = sc->server;
+ nni_aio *aio = sc->rxaio;
int rv;
nni_http_handler *h = NULL;
nni_http_handler *head = NULL;
- const char * val;
- nni_http_req * req = sc->req;
- char * uri;
+ const char *val;
+ nni_http_req *req = sc->req;
+ char *uri;
size_t urisz;
- char * path;
+ char *path;
bool badmeth = false;
bool needhost = false;
- const char * host;
- const char * cls;
+ const char *host;
+ const char *cls;
if ((rv = nni_aio_result(aio)) != 0) {
http_sconn_close(sc);
@@ -712,7 +712,7 @@ http_sconn_rxdone(void *arg)
if ((h->getbody) &&
((cls = nni_http_req_get_header(req, "Content-Length")) != NULL)) {
uint64_t len;
- char * end;
+ char *end;
len = strtoull(cls, &end, 10);
if ((end == NULL) || (*end != '\0') || (len > h->maxbody)) {
@@ -762,11 +762,11 @@ finish:
static void
http_sconn_cbdone(void *arg)
{
- http_sconn * sc = arg;
- nni_aio * aio = sc->cbaio;
- nni_http_res * res;
+ http_sconn *sc = arg;
+ nni_aio *aio = sc->cbaio;
+ nni_http_res *res;
nni_http_handler *h;
- nni_http_server * s = sc->server;
+ nni_http_server *s = sc->server;
// Get the handler. It may be set regardless of success or
// failure. Clear it, and drop our reference, since we're
@@ -804,7 +804,7 @@ http_sconn_cbdone(void *arg)
}
sc->res = res;
if (strcmp(nni_http_req_get_method(sc->req), "HEAD") == 0) {
- void * data;
+ void *data;
size_t size;
// prune off the data, but preserve the content-length
// header. By passing NULL here, we leave off the old
@@ -863,9 +863,9 @@ static void
http_server_acccb(void *arg)
{
nni_http_server *s = arg;
- nni_aio * aio = s->accaio;
- nng_stream * stream;
- http_sconn * sc;
+ nni_aio *aio = s->accaio;
+ nng_stream *stream;
+ http_sconn *sc;
int rv;
nni_mtx_lock(&s->mtx);
@@ -904,7 +904,7 @@ static void
http_server_fini(nni_http_server *s)
{
nni_http_handler *h;
- http_error * epage;
+ http_error *epage;
nni_aio_stop(s->accaio);
@@ -937,7 +937,7 @@ http_server_init(nni_http_server **serverp, const nni_url *url)
nni_http_server *s;
int rv;
nng_url my_url;
- const char * scheme;
+ const char *scheme;
if ((scheme = nni_http_stream_scheme(url->u_scheme)) == NULL) {
return (NNG_EADDRINVAL);
@@ -1127,7 +1127,7 @@ int
nni_http_server_set_error_page(
nni_http_server *s, uint16_t code, const char *html)
{
- char * body;
+ char *body;
int rv;
size_t len;
@@ -1147,7 +1147,7 @@ int
nni_http_server_set_error_file(
nni_http_server *s, uint16_t code, const char *path)
{
- void * body;
+ void *body;
size_t len;
int rv;
if ((rv = nni_file_get(path, &body, &len)) != 0) {
@@ -1163,8 +1163,8 @@ int
nni_http_server_res_error(nni_http_server *s, nni_http_res *res)
{
http_error *epage;
- char * body = NULL;
- char * html = NULL;
+ char *body = NULL;
+ char *html = NULL;
size_t len = 0;
uint16_t code = nni_http_res_get_status(res);
int rv;
@@ -1394,12 +1394,12 @@ static void
http_handle_file(nni_aio *aio)
{
nni_http_handler *h = nni_aio_get_input(aio, 1);
- nni_http_res * res = NULL;
- void * data;
+ nni_http_res *res = NULL;
+ void *data;
size_t size;
int rv;
- http_file * hf = nni_http_handler_get_data(h);
- const char * ctype;
+ http_file *hf = nni_http_handler_get_data(h);
+ const char *ctype;
if ((ctype = hf->ctype) == NULL) {
ctype = "application/octet-stream";
@@ -1466,7 +1466,7 @@ nni_http_handler_init_file_ctype(nni_http_handler **hpp, const char *uri,
const char *path, const char *ctype)
{
nni_http_handler *h;
- http_file * hf;
+ http_file *hf;
int rv;
if ((hf = NNI_ALLOC_STRUCT(hf)) == NULL) {
@@ -1515,21 +1515,21 @@ nni_http_handler_init_file(
static void
http_handle_dir(nni_aio *aio)
{
- nni_http_req * req = nni_aio_get_input(aio, 0);
+ nni_http_req *req = nni_aio_get_input(aio, 0);
nni_http_handler *h = nni_aio_get_input(aio, 1);
- nni_http_res * res = NULL;
- void * data;
+ nni_http_res *res = NULL;
+ void *data;
size_t size;
int rv;
- http_file * hf = nni_http_handler_get_data(h);
- const char * path = hf->path;
- const char * base = nni_http_handler_get_uri(h); // base uri
- const char * uri = nni_http_req_get_uri(req);
- const char * ctype;
- char * dst;
+ http_file *hf = nni_http_handler_get_data(h);
+ const char *path = hf->path;
+ const char *base = nni_http_handler_get_uri(h); // base uri
+ const char *uri = nni_http_req_get_uri(req);
+ const char *ctype;
+ char *dst;
size_t len;
size_t pnsz;
- char * pn;
+ char *pn;
len = strlen(base);
if (base[1] != '\0' && // Allows "/" as base
@@ -1647,7 +1647,7 @@ int
nni_http_handler_init_directory(
nni_http_handler **hpp, const char *uri, const char *path)
{
- http_file * hf;
+ http_file *hf;
nni_http_handler *h;
int rv;
@@ -1679,22 +1679,22 @@ nni_http_handler_init_directory(
typedef struct http_redirect {
uint16_t code;
- char * where;
+ char *where;
} http_redirect;
static void
http_handle_redirect(nni_aio *aio)
{
- nni_http_res * r = NULL;
- char * html = NULL;
- char * msg = NULL;
- char * loc = NULL;
- http_redirect * hr;
+ nni_http_res *r = NULL;
+ char *html = NULL;
+ char *msg = NULL;
+ char *loc = NULL;
+ http_redirect *hr;
nni_http_handler *h;
int rv;
- nni_http_req * req;
- const char * base;
- const char * uri;
+ nni_http_req *req;
+ const char *base;
+ const char *uri;
req = nni_aio_get_input(aio, 0);
h = nni_aio_get_input(aio, 1);
@@ -1766,7 +1766,7 @@ nni_http_handler_init_redirect(nni_http_handler **hpp, const char *uri,
{
nni_http_handler *h;
int rv;
- http_redirect * hr;
+ http_redirect *hr;
if ((hr = NNI_ALLOC_STRUCT(hr)) == NULL) {
return (NNG_ENOMEM);
@@ -1802,18 +1802,18 @@ nni_http_handler_init_redirect(nni_http_handler **hpp, const char *uri,
}
typedef struct http_static {
- void * data;
+ void *data;
size_t size;
- char * ctype;
+ char *ctype;
} http_static;
static void
http_handle_static(nni_aio *aio)
{
- http_static * hs;
- const char * ctype;
+ http_static *hs;
+ const char *ctype;
nni_http_handler *h;
- nni_http_res * r = NULL;
+ nni_http_res *r = NULL;
int rv;
h = nni_aio_get_input(aio, 1);
@@ -1854,7 +1854,7 @@ nni_http_handler_init_static(nni_http_handler **hpp, const char *uri,
{
nni_http_handler *h;
int rv;
- http_static * hs;
+ http_static *hs;
if ((hs = NNI_ALLOC_STRUCT(hs)) == NULL) {
return (NNG_ENOMEM);
@@ -1888,15 +1888,13 @@ nni_http_handler_init_static(nni_http_handler **hpp, const char *uri,
int
nni_http_server_set_tls(nni_http_server *s, nng_tls_config *tls)
{
- return (
- nng_stream_listener_set_ptr(s->listener, NNG_OPT_TLS_CONFIG, tls));
+ return (nng_stream_listener_set_tls(s->listener, tls));
}
int
nni_http_server_get_tls(nni_http_server *s, nng_tls_config **tlsp)
{
- return (nng_stream_listener_get_ptr(
- s->listener, NNG_OPT_TLS_CONFIG, (void **) tlsp));
+ return (nng_stream_listener_get_tls(s->listener, tlsp));
}
int
diff --git a/src/supplemental/tls/tls_common.c b/src/supplemental/tls/tls_common.c
index 139460f5..49d1a292 100644
--- a/src/supplemental/tls/tls_common.c
+++ b/src/supplemental/tls/tls_common.c
@@ -191,16 +191,10 @@ tls_dialer_dial(void *arg, nng_aio *aio)
}
static int
-tls_dialer_set_config(void *arg, const void *buf, size_t sz, nni_type t)
+tls_dialer_set_tls(void *arg, nng_tls_config *cfg)
{
- int rv;
- nng_tls_config *cfg;
tls_dialer *d = arg;
nng_tls_config *old;
-
- if ((rv = nni_copyin_ptr((void **) &cfg, buf, sz, t)) != 0) {
- return (rv);
- }
if (cfg == NULL) {
return (NNG_EINVAL);
}
@@ -216,44 +210,21 @@ tls_dialer_set_config(void *arg, const void *buf, size_t sz, nni_type t)
}
static int
-tls_dialer_get_config(void *arg, void *buf, size_t *szp, nni_type t)
+tls_dialer_get_tls(void *arg, nng_tls_config **cfg)
{
- tls_dialer *d = arg;
- nng_tls_config *cfg;
- int rv;
+ tls_dialer *d = arg;
nni_mtx_lock(&d->lk);
- if ((cfg = d->cfg) != NULL) {
- nng_tls_config_hold(cfg);
- }
- if ((rv = nni_copyout_ptr(cfg, buf, szp, t)) != 0) {
- nng_tls_config_free(cfg);
- }
+ *cfg = d->cfg;
nni_mtx_unlock(&d->lk);
- return (rv);
+ return (0);
}
-static const nni_option tls_dialer_opts[] = {
- {
- .o_name = NNG_OPT_TLS_CONFIG,
- .o_get = tls_dialer_get_config,
- .o_set = tls_dialer_set_config,
- },
- {
- .o_name = NULL,
- },
-};
-
static int
tls_dialer_get(void *arg, const char *name, void *buf, size_t *szp, nni_type t)
{
tls_dialer *d = arg;
- int rv;
- rv = nni_stream_dialer_get(d->d, name, buf, szp, t);
- if (rv == NNG_ENOTSUP) {
- rv = nni_getopt(tls_dialer_opts, name, d, buf, szp, t);
- }
- return (rv);
+ return (nni_stream_dialer_get(d->d, name, buf, szp, t));
}
static int
@@ -261,13 +232,8 @@ tls_dialer_set(
void *arg, const char *name, const void *buf, size_t sz, nni_type t)
{
tls_dialer *d = arg;
- int rv;
- rv = nni_stream_dialer_set(d->d, name, buf, sz, t);
- if (rv == NNG_ENOTSUP) {
- rv = nni_setopt(tls_dialer_opts, name, d, buf, sz, t);
- }
- return (rv);
+ return (nni_stream_dialer_set(d->d, name, buf, sz, t));
}
int
@@ -305,12 +271,15 @@ nni_tls_dialer_alloc(nng_stream_dialer **dp, const nng_url *url)
// Set the expected outbound hostname
nng_tls_config_server_name(d->cfg, url->u_hostname);
- d->ops.sd_close = tls_dialer_close;
- d->ops.sd_free = tls_dialer_free;
- d->ops.sd_dial = tls_dialer_dial;
- d->ops.sd_get = tls_dialer_get;
- d->ops.sd_set = tls_dialer_set;
- *dp = (void *) d;
+ d->ops.sd_close = tls_dialer_close;
+ d->ops.sd_free = tls_dialer_free;
+ d->ops.sd_dial = tls_dialer_dial;
+ d->ops.sd_get = tls_dialer_get;
+ d->ops.sd_set = tls_dialer_set;
+ d->ops.sd_get_tls = tls_dialer_get_tls;
+ d->ops.sd_set_tls = tls_dialer_set_tls;
+
+ *dp = (void *) d;
return (rv);
}
@@ -373,20 +342,13 @@ tls_listener_accept(void *arg, nng_aio *aio)
}
static int
-tls_listener_set_config(void *arg, const void *buf, size_t sz, nni_type t)
+tls_listener_set_tls(void *arg, nng_tls_config *cfg)
{
- int rv;
- nng_tls_config *cfg;
tls_listener *l = arg;
nng_tls_config *old;
-
- if ((rv = nni_copyin_ptr((void **) &cfg, buf, sz, t)) != 0) {
- return (rv);
- }
if (cfg == NULL) {
return (NNG_EINVAL);
}
-
nng_tls_config_hold(cfg);
nni_mtx_lock(&l->lk);
@@ -395,64 +357,35 @@ tls_listener_set_config(void *arg, const void *buf, size_t sz, nni_type t)
nni_mtx_unlock(&l->lk);
nng_tls_config_free(old);
-
return (0);
}
static int
-tls_listener_get_config(void *arg, void *buf, size_t *szp, nni_type t)
+tls_listener_get_tls(void *arg, nng_tls_config **cfg)
{
- tls_listener *l = arg;
- nng_tls_config *cfg;
- int rv;
+ tls_listener *l = arg;
nni_mtx_lock(&l->lk);
- if ((cfg = l->cfg) != NULL) {
- nng_tls_config_hold(cfg);
- }
- if ((rv = nni_copyout_ptr(cfg, buf, szp, t)) != 0) {
- nng_tls_config_free(cfg);
- }
+ *cfg = l->cfg;
nni_mtx_unlock(&l->lk);
- return (rv);
+ return (0);
}
-static const nni_option tls_listener_opts[] = {
- {
- .o_name = NNG_OPT_TLS_CONFIG,
- .o_get = tls_listener_get_config,
- .o_set = tls_listener_set_config,
- },
- {
- .o_name = NULL,
- },
-};
-
static int
tls_listener_get(
void *arg, const char *name, void *buf, size_t *szp, nni_type t)
{
- int rv;
tls_listener *l = arg;
- rv = nni_stream_listener_get(l->l, name, buf, szp, t);
- if (rv == NNG_ENOTSUP) {
- rv = nni_getopt(tls_listener_opts, name, l, buf, szp, t);
- }
- return (rv);
+ return (nni_stream_listener_get(l->l, name, buf, szp, t));
}
static int
tls_listener_set(
void *arg, const char *name, const void *buf, size_t sz, nni_type t)
{
- int rv;
tls_listener *l = arg;
- rv = nni_stream_listener_set(l->l, name, buf, sz, t);
- if (rv == NNG_ENOTSUP) {
- rv = nni_setopt(tls_listener_opts, name, l, buf, sz, t);
- }
- return (rv);
+ return (nni_stream_listener_set(l->l, name, buf, sz, t));
}
int
@@ -487,13 +420,15 @@ nni_tls_listener_alloc(nng_stream_listener **lp, const nng_url *url)
NNI_FREE_STRUCT(l);
return (rv);
}
- l->ops.sl_free = tls_listener_free;
- l->ops.sl_close = tls_listener_close;
- l->ops.sl_accept = tls_listener_accept;
- l->ops.sl_listen = tls_listener_listen;
- l->ops.sl_get = tls_listener_get;
- l->ops.sl_set = tls_listener_set;
- *lp = (void *) l;
+ l->ops.sl_free = tls_listener_free;
+ l->ops.sl_close = tls_listener_close;
+ l->ops.sl_accept = tls_listener_accept;
+ l->ops.sl_listen = tls_listener_listen;
+ l->ops.sl_get = tls_listener_get;
+ l->ops.sl_set = tls_listener_set;
+ l->ops.sl_get_tls = tls_listener_get_tls;
+ l->ops.sl_set_tls = tls_listener_set_tls;
+ *lp = (void *) l;
return (0);
}
diff --git a/src/supplemental/tls/tls_test.c b/src/supplemental/tls/tls_test.c
index 3d0c16a0..9317890d 100644
--- a/src/supplemental/tls/tls_test.c
+++ b/src/supplemental/tls/tls_test.c
@@ -106,7 +106,7 @@ test_tls_large_message(void)
NUTS_PASS(nng_tls_config_alloc(&c1, NNG_TLS_MODE_SERVER));
NUTS_PASS(nng_tls_config_own_cert(
c1, nuts_server_crt, nuts_server_key, NULL));
- NUTS_PASS(nng_stream_listener_set_ptr(l, NNG_OPT_TLS_CONFIG, c1));
+ NUTS_PASS(nng_stream_listener_set_tls(l, c1));
NUTS_PASS(nng_stream_listener_listen(l));
NUTS_PASS(
nng_stream_listener_get_int(l, NNG_OPT_TCP_BOUND_PORT, &port));
@@ -119,7 +119,7 @@ test_tls_large_message(void)
NUTS_PASS(nng_tls_config_ca_chain(c2, nuts_server_crt, NULL));
NUTS_PASS(nng_tls_config_server_name(c2, "localhost"));
- NUTS_PASS(nng_stream_dialer_set_ptr(d, NNG_OPT_TLS_CONFIG, c2));
+ NUTS_PASS(nng_stream_dialer_set_tls(d, c2));
nng_stream_listener_accept(l, aio1);
nng_stream_dialer_dial(d, aio2);
@@ -211,7 +211,7 @@ test_tls_psk(void)
NUTS_PASS(nng_stream_listener_alloc(&l, "tls+tcp://127.0.0.1:0"));
NUTS_PASS(nng_tls_config_alloc(&c1, NNG_TLS_MODE_SERVER));
NUTS_PASS(nng_tls_config_psk(c1, "identity", key, sizeof(key)));
- NUTS_PASS(nng_stream_listener_set_ptr(l, NNG_OPT_TLS_CONFIG, c1));
+ NUTS_PASS(nng_stream_listener_set_tls(l, c1));
NUTS_PASS(nng_stream_listener_listen(l));
NUTS_PASS(
nng_stream_listener_get_int(l, NNG_OPT_TCP_BOUND_PORT, &port));
@@ -223,7 +223,7 @@ test_tls_psk(void)
NUTS_PASS(nng_tls_config_alloc(&c2, NNG_TLS_MODE_CLIENT));
NUTS_PASS(nng_tls_config_psk(c2, "identity", key, sizeof(key)));
- NUTS_PASS(nng_stream_dialer_set_ptr(d, NNG_OPT_TLS_CONFIG, c2));
+ NUTS_PASS(nng_stream_dialer_set_tls(d, c2));
nng_stream_listener_accept(l, aio1);
nng_stream_dialer_dial(d, aio2);
@@ -301,7 +301,7 @@ test_tls_psk_server_identities(void)
nng_tls_config_psk(c1, "identity2", key + 4, sizeof(key) - 4));
NUTS_PASS(nng_tls_config_psk(c1, identity, key + 4, sizeof(key) - 4));
NUTS_PASS(nng_tls_config_psk(c1, identity, key, sizeof(key)));
- NUTS_PASS(nng_stream_listener_set_ptr(l, NNG_OPT_TLS_CONFIG, c1));
+ NUTS_PASS(nng_stream_listener_set_tls(l, c1));
NUTS_PASS(nng_stream_listener_listen(l));
NUTS_PASS(
nng_stream_listener_get_int(l, NNG_OPT_TCP_BOUND_PORT, &port));
@@ -313,7 +313,7 @@ test_tls_psk_server_identities(void)
NUTS_PASS(nng_tls_config_alloc(&c2, NNG_TLS_MODE_CLIENT));
NUTS_PASS(nng_tls_config_psk(c2, identity, key, sizeof(key)));
- NUTS_PASS(nng_stream_dialer_set_ptr(d, NNG_OPT_TLS_CONFIG, c2));
+ NUTS_PASS(nng_stream_dialer_set_tls(d, c2));
nng_stream_listener_accept(l, aio1);
nng_stream_dialer_dial(d, aio2);
@@ -387,7 +387,7 @@ test_tls_psk_bad_identity(void)
NUTS_PASS(nng_tls_config_alloc(&c1, NNG_TLS_MODE_SERVER));
// Replace the identity .. first write one value, then we change it
NUTS_PASS(nng_tls_config_psk(c1, "identity1", key, sizeof(key)));
- NUTS_PASS(nng_stream_listener_set_ptr(l, NNG_OPT_TLS_CONFIG, c1));
+ NUTS_PASS(nng_stream_listener_set_tls(l, c1));
NUTS_PASS(nng_stream_listener_listen(l));
NUTS_PASS(
nng_stream_listener_get_int(l, NNG_OPT_TCP_BOUND_PORT, &port));
@@ -400,7 +400,7 @@ test_tls_psk_bad_identity(void)
NUTS_PASS(nng_tls_config_psk(c2, "identity2", key, sizeof(key)));
NUTS_PASS(nng_tls_config_server_name(c2, "localhost"));
- NUTS_PASS(nng_stream_dialer_set_ptr(d, NNG_OPT_TLS_CONFIG, c2));
+ NUTS_PASS(nng_stream_dialer_set_tls(d, c2));
nng_stream_listener_accept(l, aio1);
nng_stream_dialer_dial(d, aio2);
@@ -463,7 +463,7 @@ test_tls_psk_config_busy(void)
NUTS_PASS(nng_stream_listener_alloc(&l, "tls+tcp://127.0.0.1:0"));
NUTS_PASS(nng_tls_config_alloc(&c1, NNG_TLS_MODE_SERVER));
NUTS_PASS(nng_tls_config_psk(c1, "identity", key, sizeof(key)));
- NUTS_PASS(nng_stream_listener_set_ptr(l, NNG_OPT_TLS_CONFIG, c1));
+ NUTS_PASS(nng_stream_listener_set_tls(l, c1));
nng_stream_listener_accept(l, aio);
nng_msleep(100);
NUTS_FAIL(
diff --git a/src/supplemental/websocket/websocket.c b/src/supplemental/websocket/websocket.c
index 8c622be6..ad3ee928 100644
--- a/src/supplemental/websocket/websocket.c
+++ b/src/supplemental/websocket/websocket.c
@@ -2110,6 +2110,20 @@ ws_listener_get(
return (rv);
}
+static int
+ws_listener_get_tls(void *arg, nng_tls_config **cfgp)
+{
+ nni_ws_listener *l = arg;
+ return (nni_http_server_get_tls(l->server, cfgp));
+}
+
+static int
+ws_listener_set_tls(void *arg, nng_tls_config *cfg)
+{
+ nni_ws_listener *l = arg;
+ return (nni_http_server_set_tls(l->server, cfg));
+}
+
int
nni_ws_listener_alloc(nng_stream_listener **wslp, const nng_url *url)
{
@@ -2151,17 +2165,19 @@ nni_ws_listener_alloc(nng_stream_listener **wslp, const nng_url *url)
return (rv);
}
- l->fragsize = WS_DEF_MAXTXFRAME;
- l->maxframe = WS_DEF_MAXRXFRAME;
- l->recvmax = WS_DEF_RECVMAX;
- l->isstream = true;
- l->ops.sl_free = ws_listener_free;
- l->ops.sl_close = ws_listener_close;
- l->ops.sl_accept = ws_listener_accept;
- l->ops.sl_listen = ws_listener_listen;
- l->ops.sl_set = ws_listener_set;
- l->ops.sl_get = ws_listener_get;
- *wslp = (void *) l;
+ l->fragsize = WS_DEF_MAXTXFRAME;
+ l->maxframe = WS_DEF_MAXRXFRAME;
+ l->recvmax = WS_DEF_RECVMAX;
+ l->isstream = true;
+ l->ops.sl_free = ws_listener_free;
+ l->ops.sl_close = ws_listener_close;
+ l->ops.sl_accept = ws_listener_accept;
+ l->ops.sl_listen = ws_listener_listen;
+ l->ops.sl_set = ws_listener_set;
+ l->ops.sl_get = ws_listener_get;
+ l->ops.sl_get_tls = ws_listener_get_tls;
+ l->ops.sl_set_tls = ws_listener_set_tls;
+ *wslp = (void *) l;
return (0);
}
@@ -2641,6 +2657,20 @@ ws_dialer_get(void *arg, const char *name, void *buf, size_t *szp, nni_type t)
return (rv);
}
+static int
+ws_dialer_get_tls(void *arg, nng_tls_config **cfgp)
+{
+ nni_ws_dialer *d = arg;
+ return (nni_http_client_get_tls(d->client, cfgp));
+}
+
+static int
+ws_dialer_set_tls(void *arg, nng_tls_config *cfg)
+{
+ nni_ws_dialer *d = arg;
+ return (nni_http_client_set_tls(d->client, cfg));
+}
+
int
nni_ws_dialer_alloc(nng_stream_dialer **dp, const nng_url *url)
{
@@ -2670,12 +2700,14 @@ nni_ws_dialer_alloc(nng_stream_dialer **dp, const nng_url *url)
d->maxframe = WS_DEF_MAXRXFRAME;
d->fragsize = WS_DEF_MAXTXFRAME;
- d->ops.sd_free = ws_dialer_free;
- d->ops.sd_close = ws_dialer_close;
- d->ops.sd_dial = ws_dialer_dial;
- d->ops.sd_set = ws_dialer_set;
- d->ops.sd_get = ws_dialer_get;
- *dp = (void *) d;
+ d->ops.sd_free = ws_dialer_free;
+ d->ops.sd_close = ws_dialer_close;
+ d->ops.sd_dial = ws_dialer_dial;
+ d->ops.sd_set = ws_dialer_set;
+ d->ops.sd_get = ws_dialer_get;
+ d->ops.sd_set_tls = ws_dialer_set_tls;
+ d->ops.sd_get_tls = ws_dialer_get_tls;
+ *dp = (void *) d;
return (0);
}
diff --git a/src/supplemental/websocket/wssfile_test.c b/src/supplemental/websocket/wssfile_test.c
index b449a6bf..584f8481 100644
--- a/src/supplemental/websocket/wssfile_test.c
+++ b/src/supplemental/websocket/wssfile_test.c
@@ -32,7 +32,7 @@ init_dialer_wss_file(nng_dialer d)
NUTS_PASS(nng_tls_config_alloc(&c, NNG_TLS_MODE_CLIENT));
NUTS_PASS(nng_tls_config_ca_file(c, pth));
NUTS_PASS(nng_tls_config_server_name(c, "localhost"));
- NUTS_PASS(nng_dialer_set_ptr(d, NNG_OPT_TLS_CONFIG, c));
+ NUTS_PASS(nng_dialer_set_tls(d, c));
nni_file_delete(pth);
nng_strfree(pth);
nng_tls_config_free(c);
@@ -57,7 +57,7 @@ init_listener_wss_file(nng_listener l)
nng_strfree(cert_key);
NUTS_PASS(nng_tls_config_alloc(&c, NNG_TLS_MODE_SERVER));
NUTS_PASS(nng_tls_config_cert_key_file(c, pth, pth));
- NUTS_PASS(nng_listener_set_ptr(l, NNG_OPT_TLS_CONFIG, c));
+ NUTS_PASS(nng_listener_set_tls(l, c));
nni_file_delete(pth);
nng_strfree(pth);