diff options
Diffstat (limited to 'src/supplemental')
| -rw-r--r-- | src/supplemental/http/http_api.h | 10 | ||||
| -rw-r--r-- | src/supplemental/http/http_client.c | 12 | ||||
| -rw-r--r-- | src/supplemental/http/http_conn.c | 4 | ||||
| -rw-r--r-- | src/supplemental/http/http_public.c | 16 | ||||
| -rw-r--r-- | src/supplemental/http/http_server.c | 12 | ||||
| -rw-r--r-- | src/supplemental/tcp/tcp.c | 58 | ||||
| -rw-r--r-- | src/supplemental/tls/tls_api.h | 1 | ||||
| -rw-r--r-- | src/supplemental/tls/tls_common.c | 119 | ||||
| -rw-r--r-- | src/supplemental/websocket/websocket.c | 111 | ||||
| -rw-r--r-- | src/supplemental/websocket/websocket.h | 3 |
10 files changed, 87 insertions, 259 deletions
diff --git a/src/supplemental/http/http_api.h b/src/supplemental/http/http_api.h index 1305b5a0..33947abf 100644 --- a/src/supplemental/http/http_api.h +++ b/src/supplemental/http/http_api.h @@ -205,9 +205,9 @@ extern int nni_http_server_set_tls(nni_http_server *, struct nng_tls_config *); extern int nni_http_server_get_tls( nni_http_server *, struct nng_tls_config **); -extern int nni_http_server_setx( +extern int nni_http_server_set( nni_http_server *, const char *, const void *, size_t, nni_type); -extern int nni_http_server_getx( +extern int nni_http_server_get( nni_http_server *, const char *, void *, size_t *, nni_type); // nni_http_server_start starts listening on the supplied port. @@ -359,9 +359,9 @@ extern int nni_http_client_set_tls(nni_http_client *, struct nng_tls_config *); extern int nni_http_client_get_tls( nni_http_client *, struct nng_tls_config **); -extern int nni_http_client_setx( - nni_http_client *, const char *, const void *, size_t, nni_type); -extern int nni_http_client_getx( +extern int nni_http_client_set( + nni_http_client *, const char *, const void *buf, size_t, nni_type); +extern int nni_http_client_get( nni_http_client *, const char *, void *, size_t *, nni_type); extern void nni_http_client_connect(nni_http_client *, nni_aio *); diff --git a/src/supplemental/http/http_client.c b/src/supplemental/http/http_client.c index 68f0f61c..c420e1ff 100644 --- a/src/supplemental/http/http_client.c +++ b/src/supplemental/http/http_client.c @@ -142,7 +142,7 @@ int nni_http_client_set_tls(nni_http_client *c, nng_tls_config *tls) { int rv; - rv = nni_stream_dialer_setx(c->dialer, NNG_OPT_TLS_CONFIG, &tls, + rv = nni_stream_dialer_set(c->dialer, NNG_OPT_TLS_CONFIG, &tls, sizeof(tls), NNI_TYPE_POINTER); return (rv); } @@ -152,24 +152,24 @@ nni_http_client_get_tls(nni_http_client *c, nng_tls_config **tlsp) { size_t sz = sizeof(*tlsp); int rv; - rv = nni_stream_dialer_getx( + rv = nni_stream_dialer_get( c->dialer, NNG_OPT_TLS_CONFIG, tlsp, &sz, NNI_TYPE_POINTER); return (rv); } int -nni_http_client_setx(nni_http_client *c, const char *name, const void *buf, +nni_http_client_set(nni_http_client *c, const char *name, const void *buf, size_t sz, nni_type t) { // We have no local options, but we just pass them straight through. - return (nni_stream_dialer_setx(c->dialer, name, buf, sz, t)); + return (nni_stream_dialer_set(c->dialer, name, buf, sz, t)); } int -nni_http_client_getx( +nni_http_client_get( nni_http_client *c, const char *name, void *buf, size_t *szp, nni_type t) { - return (nni_stream_dialer_getx(c->dialer, name, buf, szp, t)); + return (nni_stream_dialer_get(c->dialer, name, buf, szp, t)); } static void diff --git a/src/supplemental/http/http_conn.c b/src/supplemental/http/http_conn.c index 4b0c81c0..646a3067 100644 --- a/src/supplemental/http/http_conn.c +++ b/src/supplemental/http/http_conn.c @@ -656,7 +656,7 @@ nni_http_conn_getopt( if (conn->closed) { rv = NNG_ECLOSED; } else { - rv = nni_stream_getx(conn->sock, name, buf, szp, t); + rv = nni_stream_get(conn->sock, name, buf, szp, t); } nni_mtx_unlock(&conn->mtx); return (rv); @@ -671,7 +671,7 @@ nni_http_conn_setopt(nni_http_conn *conn, const char *name, const void *buf, if (conn->closed) { rv = NNG_ECLOSED; } else { - rv = nni_stream_setx(conn->sock, name, buf, sz, t); + rv = nni_stream_set(conn->sock, name, buf, sz, t); } nni_mtx_unlock(&conn->mtx); return (rv); diff --git a/src/supplemental/http/http_public.c b/src/supplemental/http/http_public.c index 60ca2693..7900aa7f 100644 --- a/src/supplemental/http/http_public.c +++ b/src/supplemental/http/http_public.c @@ -779,29 +779,29 @@ nng_http_server_set_tls(nng_http_server *srv, struct nng_tls_config *cfg) } int -nng_http_server_get_tls(nng_http_server *srv, struct nng_tls_config **cfgp) +nng_http_server_get_tls(nng_http_server *srv, struct nng_tls_config **cfg) { #if defined(NNG_SUPP_HTTP) && defined(NNG_SUPP_TLS) - return (nni_http_server_get_tls(srv, cfgp)); + return (nni_http_server_get_tls(srv, cfg)); #else NNI_ARG_UNUSED(srv); - NNI_ARG_UNUSED(cfgp); + NNI_ARG_UNUSED(cfg); return (NNG_ENOTSUP); #endif } int -nng_http_server_get_addr(nng_http_server *srv, nng_sockaddr *addrp) +nng_http_server_get_addr(nng_http_server *srv, nng_sockaddr *addr) { #ifdef NNG_SUPP_HTTP size_t size = sizeof(nng_sockaddr); - if (srv == NULL || addrp == NULL) + if (srv == NULL || addr == NULL) return NNG_EINVAL; - return (nni_http_server_getx( - srv, NNG_OPT_LOCADDR, addrp, &size, NNI_TYPE_SOCKADDR)); + return (nni_http_server_get( + srv, NNG_OPT_LOCADDR, addr, &size, NNI_TYPE_SOCKADDR)); #else NNI_ARG_UNUSED(srv); - NNI_ARG_UNUSED(addrp); + NNI_ARG_UNUSED(addr); return (NNG_ENOTSUP); #endif } diff --git a/src/supplemental/http/http_server.c b/src/supplemental/http/http_server.c index d43dd888..46f2ce8a 100644 --- a/src/supplemental/http/http_server.c +++ b/src/supplemental/http/http_server.c @@ -1869,7 +1869,7 @@ int nni_http_server_set_tls(nni_http_server *s, nng_tls_config *tls) { int rv; - rv = nni_stream_listener_setx(s->listener, NNG_OPT_TLS_CONFIG, &tls, + rv = nni_stream_listener_set(s->listener, NNG_OPT_TLS_CONFIG, &tls, sizeof(tls), NNI_TYPE_POINTER); return (rv); } @@ -1879,24 +1879,24 @@ nni_http_server_get_tls(nni_http_server *s, nng_tls_config **tlsp) { size_t sz = sizeof(*tlsp); int rv; - rv = nni_stream_listener_getx( + rv = nni_stream_listener_get( s->listener, NNG_OPT_TLS_CONFIG, tlsp, &sz, NNI_TYPE_POINTER); return (rv); } int -nni_http_server_setx(nni_http_server *s, const char *name, const void *buf, +nni_http_server_set(nni_http_server *s, const char *name, const void *buf, size_t sz, nni_type t) { // We have no local options, but we just pass them straight through. - return (nni_stream_listener_setx(s->listener, name, buf, sz, t)); + return (nni_stream_listener_set(s->listener, name, buf, sz, t)); } int -nni_http_server_getx( +nni_http_server_get( nni_http_server *s, const char *name, void *buf, size_t *szp, nni_type t) { - return (nni_stream_listener_getx(s->listener, name, buf, szp, t)); + return (nni_stream_listener_get(s->listener, name, buf, szp, t)); } void diff --git a/src/supplemental/tcp/tcp.c b/src/supplemental/tcp/tcp.c index cde79051..2b1bd987 100644 --- a/src/supplemental/tcp/tcp.c +++ b/src/supplemental/tcp/tcp.c @@ -186,19 +186,19 @@ tcp_dialer_dial(void *arg, nng_aio *aio) } static int -tcp_dialer_getx( +tcp_dialer_get( void *arg, const char *name, void *buf, size_t *szp, nni_type t) { tcp_dialer *d = arg; - return (nni_tcp_dialer_getopt(d->d, name, buf, szp, t)); + return (nni_tcp_dialer_get(d->d, name, buf, szp, t)); } static int -tcp_dialer_setx( +tcp_dialer_set( void *arg, const char *name, const void *buf, size_t sz, nni_type t) { tcp_dialer *d = arg; - return (nni_tcp_dialer_setopt(d->d, name, buf, sz, t)); + return (nni_tcp_dialer_set(d->d, name, buf, sz, t)); } static int @@ -224,8 +224,8 @@ tcp_dialer_alloc(tcp_dialer **dp) d->ops.sd_close = tcp_dialer_close; d->ops.sd_free = tcp_dialer_free; d->ops.sd_dial = tcp_dialer_dial; - d->ops.sd_getx = tcp_dialer_getx; - d->ops.sd_setx = tcp_dialer_setx; + d->ops.sd_get = tcp_dialer_get; + d->ops.sd_set = tcp_dialer_set; *dp = d; return (0); @@ -320,7 +320,7 @@ tcp_listener_get_port(void *arg, void *buf, size_t *szp, nni_type t) uint8_t * paddr; sz = sizeof(sa); - rv = nni_tcp_listener_getopt( + rv = nni_tcp_listener_get( l->l, NNG_OPT_LOCADDR, &sa, &sz, NNI_TYPE_SOCKADDR); if (rv != 0) { return (rv); @@ -349,22 +349,22 @@ tcp_listener_get_port(void *arg, void *buf, size_t *szp, nni_type t) } static int -tcp_listener_getx( +tcp_listener_get( void *arg, const char *name, void *buf, size_t *szp, nni_type t) { tcp_listener *l = arg; if (strcmp(name, NNG_OPT_TCP_BOUND_PORT) == 0) { return (tcp_listener_get_port(l, buf, szp, t)); } - return (nni_tcp_listener_getopt(l->l, name, buf, szp, t)); + return (nni_tcp_listener_get(l->l, name, buf, szp, t)); } static int -tcp_listener_setx( +tcp_listener_set( void *arg, const char *name, const void *buf, size_t sz, nni_type t) { tcp_listener *l = arg; - return (nni_tcp_listener_setopt(l->l, name, buf, sz, t)); + return (nni_tcp_listener_set(l->l, name, buf, sz, t)); } static int @@ -386,8 +386,8 @@ tcp_listener_alloc_addr(nng_stream_listener **lp, const nng_sockaddr *sa) l->ops.sl_close = tcp_listener_close; l->ops.sl_listen = tcp_listener_listen; l->ops.sl_accept = tcp_listener_accept; - l->ops.sl_getx = tcp_listener_getx; - l->ops.sl_setx = tcp_listener_setx; + l->ops.sl_get = tcp_listener_get; + l->ops.sl_set = tcp_listener_set; *lp = (void *) l; return (0); @@ -434,35 +434,3 @@ nni_tcp_listener_alloc(nng_stream_listener **lp, const nng_url *url) return (tcp_listener_alloc_addr(lp, &sa)); } - -static int -tcp_check_bool(const void *val, size_t sz, nni_type t) -{ - return (nni_copyin_bool(NULL, val, sz, t)); -} - -static const nni_chkoption tcp_chkopts[] = { - { - .o_name = NNG_OPT_TCP_KEEPALIVE, - .o_check = tcp_check_bool, - }, - { - .o_name = NNG_OPT_TCP_NODELAY, - .o_check = tcp_check_bool, - }, - { - .o_name = NNG_OPT_TCP_BOUND_PORT, - }, - { - .o_name = NNG_OPT_LOCADDR, - }, - { - .o_name = NULL, - }, -}; - -int -nni_tcp_checkopt(const char *name, const void *data, size_t sz, nni_type t) -{ - return (nni_chkopt(tcp_chkopts, name, data, sz, t)); -} diff --git a/src/supplemental/tls/tls_api.h b/src/supplemental/tls/tls_api.h index 642b9072..0c3e3155 100644 --- a/src/supplemental/tls/tls_api.h +++ b/src/supplemental/tls/tls_api.h @@ -18,6 +18,5 @@ // object. All fields will be zeroed. extern int nni_tls_dialer_alloc(nng_stream_dialer **, const nng_url *); extern int nni_tls_listener_alloc(nng_stream_listener **, const nng_url *); -extern int nni_tls_checkopt(const char *, const void *, size_t, nni_type); #endif // NNG_SUPPLEMENTAL_TLS_TLS_API_H diff --git a/src/supplemental/tls/tls_common.c b/src/supplemental/tls/tls_common.c index 243ac20e..e23fb4d8 100644 --- a/src/supplemental/tls/tls_common.c +++ b/src/supplemental/tls/tls_common.c @@ -188,13 +188,18 @@ tls_dialer_dial(void *arg, nng_aio *aio) static int tls_check_string(const void *v, size_t sz, nni_opt_type t) { - if ((t != NNI_TYPE_OPAQUE) && (t != NNI_TYPE_STRING)) { + switch (t) { + case NNI_TYPE_OPAQUE: + if (nni_strnlen(v, sz) >= sz) { + return (NNG_EINVAL); + } + return (0); + case NNI_TYPE_STRING: + // Caller is assumed to pass a good string. + return (0); + default: return (NNG_EBADTYPE); } - if (nni_strnlen(v, sz) >= sz) { - return (NNG_EINVAL); - } - return (0); } static int @@ -326,13 +331,13 @@ static const nni_option tls_dialer_opts[] = { }; static int -tls_dialer_getx( +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_getx(d->d, name, buf, szp, t); + 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); } @@ -340,13 +345,13 @@ tls_dialer_getx( } static int -tls_dialer_setx( +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_setx(d->d, name, buf, sz, t); + 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); } @@ -391,8 +396,8 @@ nni_tls_dialer_alloc(nng_stream_dialer **dp, const nng_url *url) d->ops.sd_close = tls_dialer_close; d->ops.sd_free = tls_dialer_free; d->ops.sd_dial = tls_dialer_dial; - d->ops.sd_getx = tls_dialer_getx; - d->ops.sd_setx = tls_dialer_setx; + d->ops.sd_get = tls_dialer_get; + d->ops.sd_set = tls_dialer_set; *dp = (void *) d; return (rv); } @@ -586,13 +591,13 @@ static const nni_option tls_listener_opts[] = { }; static int -tls_listener_getx( +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_getx(l->l, name, buf, szp, t); + 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); } @@ -600,13 +605,13 @@ tls_listener_getx( } static int -tls_listener_setx( +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_setx(l->l, name, buf, sz, t); + 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); } @@ -649,80 +654,12 @@ nni_tls_listener_alloc(nng_stream_listener **lp, const nng_url *url) l->ops.sl_close = tls_listener_close; l->ops.sl_accept = tls_listener_accept; l->ops.sl_listen = tls_listener_listen; - l->ops.sl_getx = tls_listener_getx; - l->ops.sl_setx = tls_listener_setx; + l->ops.sl_get = tls_listener_get; + l->ops.sl_set = tls_listener_set; *lp = (void *) l; return (0); } -// The following checks exist for socket configuration, when we need to -// configure an option on a socket before any transport is configured -// underneath. - -static int -tls_check_config(const void *buf, size_t sz, nni_type t) -{ - int rv; - nng_tls_config *cfg; - - if ((rv = nni_copyin_ptr((void **) &cfg, buf, sz, t)) != 0) { - return (rv); - } - if (cfg == NULL) { - return (NNG_EINVAL); - } - return (0); -} - -static int -tls_check_auth_mode(const void *buf, size_t sz, nni_type t) -{ - int mode; - int rv; - - rv = nni_copyin_int(&mode, buf, sz, NNG_TLS_AUTH_MODE_NONE, - NNG_TLS_AUTH_MODE_REQUIRED, t); - return (rv); -} - -static const nni_chkoption tls_check_opts[] = { - { - .o_name = NNG_OPT_TLS_CONFIG, - .o_check = tls_check_config, - }, - { - .o_name = NNG_OPT_TLS_SERVER_NAME, - .o_check = tls_check_string, - }, - { - .o_name = NNG_OPT_TLS_CA_FILE, - .o_check = tls_check_string, - }, - { - .o_name = NNG_OPT_TLS_CERT_KEY_FILE, - .o_check = tls_check_string, - }, - { - .o_name = NNG_OPT_TLS_AUTH_MODE, - .o_check = tls_check_auth_mode, - }, - { - .o_name = NULL, - }, -}; - -int -nni_tls_checkopt(const char *name, const void *data, size_t sz, nni_type t) -{ - int rv; - - rv = nni_chkopt(tls_check_opts, name, data, sz, t); - if (rv == NNG_ENOTSUP) { - rv = nni_stream_checkopt("tcp", name, data, sz, t); - } - return (rv); -} - static void tls_cancel(nni_aio *aio, void *arg, int rv) { @@ -826,7 +763,7 @@ static const nni_option tls_options[] = { }; static int -tls_setx(void *arg, const char *name, const void *buf, size_t sz, nni_type t) +tls_set(void *arg, const char *name, const void *buf, size_t sz, nni_type t) { tls_conn * conn = arg; int rv; @@ -834,19 +771,19 @@ tls_setx(void *arg, const char *name, const void *buf, size_t sz, nni_type t) tcp = (conn != NULL) ? conn->tcp : NULL; - if ((rv = nni_stream_setx(tcp, name, buf, sz, t)) != NNG_ENOTSUP) { + if ((rv = nni_stream_set(tcp, name, buf, sz, t)) != NNG_ENOTSUP) { return (rv); } return (nni_setopt(tls_options, name, conn, buf, sz, t)); } static int -tls_getx(void *arg, const char *name, void *buf, size_t *szp, nni_type t) +tls_get(void *arg, const char *name, void *buf, size_t *szp, nni_type t) { tls_conn *conn = arg; int rv; - if ((rv = nni_stream_getx(conn->tcp, name, buf, szp, t)) != + if ((rv = nni_stream_get(conn->tcp, name, buf, szp, t)) != NNG_ENOTSUP) { return (rv); } @@ -893,8 +830,8 @@ tls_alloc(tls_conn **conn_p, nng_tls_config *cfg, nng_aio *user_aio) conn->stream.s_free = tls_free; conn->stream.s_send = tls_send; conn->stream.s_recv = tls_recv; - conn->stream.s_getx = tls_getx; - conn->stream.s_setx = tls_setx; + conn->stream.s_get = tls_get; + conn->stream.s_set = tls_set; nng_tls_config_hold(cfg); *conn_p = conn; diff --git a/src/supplemental/websocket/websocket.c b/src/supplemental/websocket/websocket.c index e65fc24f..20adf626 100644 --- a/src/supplemental/websocket/websocket.c +++ b/src/supplemental/websocket/websocket.c @@ -179,8 +179,8 @@ static void ws_str_free(void *); static void ws_str_close(void *); static void ws_str_send(void *, nng_aio *); static void ws_str_recv(void *, nng_aio *); -static int ws_str_getx(void *, const char *, void *, size_t *, nni_type); -static int ws_str_setx(void *, const char *, const void *, size_t, nni_type); +static int ws_str_get(void *, const char *, void *, size_t *, nni_type); +static int ws_str_set(void *, const char *, const void *, size_t, nni_type); static void ws_listener_close(void *); static void ws_listener_free(void *); @@ -1438,8 +1438,8 @@ ws_init(nni_ws **wsp) ws->ops.s_free = ws_str_free; ws->ops.s_send = ws_str_send; ws->ops.s_recv = ws_str_recv; - ws->ops.s_getx = ws_str_getx; - ws->ops.s_setx = ws_str_setx; + ws->ops.s_get = ws_str_get; + ws->ops.s_set = ws_str_set; ws->fragsize = 1 << 20; // we won't send a frame larger than this *wsp = ws; @@ -2047,7 +2047,7 @@ ws_listener_set_header(nni_ws_listener *l, const char *name, const void *buf, } static int -ws_listener_setx( +ws_listener_set( void *arg, const char *name, const void *buf, size_t sz, nni_type t) { nni_ws_listener *l = arg; @@ -2055,7 +2055,7 @@ ws_listener_setx( rv = nni_setopt(ws_listener_options, name, l, buf, sz, t); if (rv == NNG_ENOTSUP) { - rv = nni_http_server_setx(l->server, name, buf, sz, t); + rv = nni_http_server_set(l->server, name, buf, sz, t); } if (rv == NNG_ENOTSUP) { @@ -2067,7 +2067,7 @@ ws_listener_setx( } static int -ws_listener_getx( +ws_listener_get( void *arg, const char *name, void *buf, size_t *szp, nni_type t) { nni_ws_listener *l = arg; @@ -2075,7 +2075,7 @@ ws_listener_getx( rv = nni_getopt(ws_listener_options, name, l, buf, szp, t); if (rv == NNG_ENOTSUP) { - rv = nni_http_server_getx(l->server, name, buf, szp, t); + rv = nni_http_server_get(l->server, name, buf, szp, t); } return (rv); } @@ -2128,8 +2128,8 @@ nni_ws_listener_alloc(nng_stream_listener **wslp, const nng_url *url) l->ops.sl_close = ws_listener_close; l->ops.sl_accept = ws_listener_accept; l->ops.sl_listen = ws_listener_listen; - l->ops.sl_setx = ws_listener_setx; - l->ops.sl_getx = ws_listener_getx; + l->ops.sl_set = ws_listener_set; + l->ops.sl_get = ws_listener_get; *wslp = (void *) l; return (0); } @@ -2578,7 +2578,7 @@ ws_dialer_set_header( } static int -ws_dialer_setx( +ws_dialer_set( void *arg, const char *name, const void *buf, size_t sz, nni_type t) { nni_ws_dialer *d = arg; @@ -2586,7 +2586,7 @@ ws_dialer_setx( rv = nni_setopt(ws_dialer_options, name, d, buf, sz, t); if (rv == NNG_ENOTSUP) { - rv = nni_http_client_setx(d->client, name, buf, sz, t); + rv = nni_http_client_set(d->client, name, buf, sz, t); } if (rv == NNG_ENOTSUP) { @@ -2598,14 +2598,14 @@ ws_dialer_setx( } static int -ws_dialer_getx(void *arg, const char *name, void *buf, size_t *szp, nni_type t) +ws_dialer_get(void *arg, const char *name, void *buf, size_t *szp, nni_type t) { nni_ws_dialer *d = arg; int rv; rv = nni_getopt(ws_dialer_options, name, d, buf, szp, t); if (rv == NNG_ENOTSUP) { - rv = nni_http_client_getx(d->client, name, buf, szp, t); + rv = nni_http_client_get(d->client, name, buf, szp, t); } return (rv); } @@ -2641,8 +2641,8 @@ nni_ws_dialer_alloc(nng_stream_dialer **dp, const nng_url *url) d->ops.sd_free = ws_dialer_free; d->ops.sd_close = ws_dialer_close; d->ops.sd_dial = ws_dialer_dial; - d->ops.sd_setx = ws_dialer_setx; - d->ops.sd_getx = ws_dialer_getx; + d->ops.sd_set = ws_dialer_set; + d->ops.sd_get = ws_dialer_get; *dp = (void *) d; return (0); } @@ -2652,9 +2652,6 @@ nni_ws_dialer_alloc(nng_stream_dialer **dp, const nng_url *url) // the dialer does not confirm the server's response at the HTTP // level. (It can still issue a websocket close). -// The implementation will send periodic PINGs, and respond with -// PONGs. - static void ws_str_free(void *arg) { @@ -2840,7 +2837,7 @@ static const nni_option ws_options[] = { }; static int -ws_str_setx(void *arg, const char *nm, const void *buf, size_t sz, nni_type t) +ws_str_set(void *arg, const char *nm, const void *buf, size_t sz, nni_type t) { nni_ws *ws = arg; int rv; @@ -2893,7 +2890,7 @@ ws_get_res_header( } static int -ws_str_getx(void *arg, const char *nm, void *buf, size_t *szp, nni_type t) +ws_str_get(void *arg, const char *nm, void *buf, size_t *szp, nni_type t) { nni_ws *ws = arg; int rv; @@ -2918,75 +2915,3 @@ ws_str_getx(void *arg, const char *nm, void *buf, size_t *szp, nni_type t) } return (rv); } - -static int -ws_check_size(const void *buf, size_t sz, nni_type t) -{ - return (nni_copyin_size(NULL, buf, sz, 0, NNI_MAXSZ, t)); -} - -static int -ws_check_bool(const void *buf, size_t sz, nni_type t) -{ - return (nni_copyin_size(NULL, buf, sz, 0, NNI_MAXSZ, t)); -} - -static const nni_chkoption ws_chkopts[] = { - { - .o_name = NNG_OPT_WS_SENDMAXFRAME, - .o_check = ws_check_size, - }, - { - .o_name = NNG_OPT_WS_RECVMAXFRAME, - .o_check = ws_check_size, - }, - { - .o_name = NNG_OPT_RECVMAXSZ, - .o_check = ws_check_size, - }, - { - .o_name = NNG_OPT_WS_PROTOCOL, - .o_check = ws_check_string, - }, - { - .o_name = NNG_OPT_WS_REQUEST_HEADERS, - .o_check = ws_check_string, - }, - { - .o_name = NNG_OPT_WS_RESPONSE_HEADERS, - .o_check = ws_check_string, - }, - { - .o_name = NNG_OPT_WS_RECV_TEXT, - .o_check = ws_check_bool, - }, - { - .o_name = NNG_OPT_WS_SEND_TEXT, - .o_check = ws_check_bool, - }, - { - .o_name = NULL, - }, -}; - -int -nni_ws_checkopt(const char *name, const void *data, size_t sz, nni_type t) -{ - int rv; - - rv = nni_chkopt(ws_chkopts, name, data, sz, t); - if (rv == NNG_ENOTSUP) { - rv = nni_stream_checkopt("tcp", name, data, sz, t); - } - if (rv == NNG_ENOTSUP) { - rv = nni_stream_checkopt("tls+tcp", name, data, sz, t); - } - if (rv == NNG_ENOTSUP) { - if (startswith(name, NNG_OPT_WS_REQUEST_HEADER) || - startswith(name, NNG_OPT_WS_RESPONSE_HEADER)) { - rv = ws_check_string(data, sz, t); - } - } - // Potentially, add checks for header options. - return (rv); -} diff --git a/src/supplemental/websocket/websocket.h b/src/supplemental/websocket/websocket.h index 1ecb4618..ea4975ff 100644 --- a/src/supplemental/websocket/websocket.h +++ b/src/supplemental/websocket/websocket.h @@ -1,5 +1,5 @@ // -// Copyright 2019 Staysail Systems, Inc. <info@staysail.tech> +// Copyright 2020 Staysail Systems, Inc. <info@staysail.tech> // Copyright 2018 Capitar IT Group BV <info@capitar.com> // Copyright 2019 Devolutions <info@devolutions.net> // @@ -33,6 +33,5 @@ typedef struct nni_ws_dialer nni_ws_dialer; // rely upon it being around. extern int nni_ws_listener_alloc(nng_stream_listener **, const nni_url *); extern int nni_ws_dialer_alloc(nng_stream_dialer **, const nni_url *); -extern int nni_ws_checkopt(const char *, const void *, size_t, nni_type); #endif // NNG_SUPPLEMENTAL_WEBSOCKET_WEBSOCKET_H |
