diff options
Diffstat (limited to 'src/supplemental')
| -rw-r--r-- | src/supplemental/http/http_client.c | 33 | ||||
| -rw-r--r-- | src/supplemental/http/http_server.c | 156 | ||||
| -rw-r--r-- | src/supplemental/tls/tls_common.c | 129 | ||||
| -rw-r--r-- | src/supplemental/tls/tls_test.c | 18 | ||||
| -rw-r--r-- | src/supplemental/websocket/websocket.c | 66 | ||||
| -rw-r--r-- | src/supplemental/websocket/wssfile_test.c | 4 |
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); |
