diff options
| -rw-r--r-- | docs/man/nng_ctx.5.adoc | 7 | ||||
| -rw-r--r-- | docs/man/nng_dialer.5.adoc | 11 | ||||
| -rw-r--r-- | docs/man/nng_listener.5.adoc | 11 | ||||
| -rw-r--r-- | docs/man/nng_pipe.5.adoc | 11 | ||||
| -rw-r--r-- | docs/man/nng_socket.5.adoc | 9 | ||||
| -rw-r--r-- | src/compat/nanomsg/nn.c | 95 | ||||
| -rw-r--r-- | src/core/protocol.c | 8 | ||||
| -rw-r--r-- | src/nng.c | 397 | ||||
| -rw-r--r-- | src/nng.h | 32 | ||||
| -rw-r--r-- | tests/bufsz.c | 4 | ||||
| -rw-r--r-- | tests/message.c | 14 | ||||
| -rw-r--r-- | tests/multistress.c | 26 | ||||
| -rw-r--r-- | tests/pair1.c | 28 | ||||
| -rw-r--r-- | tests/reconnect.c | 2 | ||||
| -rw-r--r-- | tests/reqstress.c | 10 | ||||
| -rw-r--r-- | tests/sock.c | 64 | ||||
| -rw-r--r-- | tests/surveyctx.c | 2 | ||||
| -rw-r--r-- | tests/tcp.c | 2 | ||||
| -rw-r--r-- | tests/tcp6.c | 4 | ||||
| -rw-r--r-- | tests/tls.c | 6 | ||||
| -rw-r--r-- | tests/trantest.h | 43 | ||||
| -rw-r--r-- | tests/ws.c | 2 | ||||
| -rw-r--r-- | tests/wss.c | 2 | ||||
| -rw-r--r-- | tests/wssfile.c | 6 | ||||
| -rw-r--r-- | tests/zt.c | 2 |
25 files changed, 453 insertions, 345 deletions
diff --git a/docs/man/nng_ctx.5.adoc b/docs/man/nng_ctx.5.adoc index 4fcac571..98402738 100644 --- a/docs/man/nng_ctx.5.adoc +++ b/docs/man/nng_ctx.5.adoc @@ -19,7 +19,7 @@ nng_ctx - protocol context ---- #include <nng/nng.h> -typedef uint32_t nng_ctx +typedef struct nng_ctx_s nng_ctx ---- == DESCRIPTION @@ -38,6 +38,11 @@ of any sent request, a timer to retry the request on failure, and so forth. A separate context on the same socket can have similar data, but corresponding to a completely different request. +IMPORTANT: The `nng_ctx` structure is always passed by value (both +for input parameters and return values), and should be treated opaquely. +Passing structures this way ensures gives the compiler a chance to perform +accurate type checks in functions passing values of this type. + All contexts share the same socket, and so some options, as well as the underlying transport details, will be common to all contexts on that socket. diff --git a/docs/man/nng_dialer.5.adoc b/docs/man/nng_dialer.5.adoc index daadbd0b..45c60bc9 100644 --- a/docs/man/nng_dialer.5.adoc +++ b/docs/man/nng_dialer.5.adoc @@ -16,11 +16,11 @@ nng_dialer - dialer == SYNOPSIS [source, c] ------------ +---- #include <nng/nng.h> -typedef uint32_t nng_dialer; ------------ +typedef struct nng_dialer_s nng_dialer; +---- == DESCRIPTION @@ -38,6 +38,11 @@ Dialer objects are created by the or <<nng_dial.3#,`nng_dial()`>> functions, and are always "`owned`" by a single <<nng_socket.5#,`nng_socket`>>. +IMPORTANT: The `nng_dialer` structure is always passed by value (both +for input parameters and return values), and should be treated opaquely. +Passing structures this way ensures gives the compiler a chance to perform +accurate type checks in functions passing values of this type. + TIP: A given <<nng_socket.5#,`nng_socket`>> may have multiple dialer objects, multiple <<nng_listener.5#,listener>> objects, or even some of both. diff --git a/docs/man/nng_listener.5.adoc b/docs/man/nng_listener.5.adoc index 6c5d0bd0..558eb920 100644 --- a/docs/man/nng_listener.5.adoc +++ b/docs/man/nng_listener.5.adoc @@ -16,11 +16,11 @@ nng_listener - listener == SYNOPSIS [source, c] ------------ +---- #include <nng/nng.h> -typedef uint32_t nng_listener; ------------ +typedef struct nng_listener_s nng_listener; +---- == DESCRIPTION @@ -35,6 +35,11 @@ Listener objects are created by the or <<nng_listen.3#,`nng_listen()`>> functions, and are always "`owned`" by a single <<nng_socket.5#,`nng_socket`>>. +IMPORTANT: The `nng_listener` structure is always passed by value (both +for input parameters and return values), and should be treated opaquely. +Passing structures this way ensures gives the compiler a chance to perform +accurate type checks in functions passing values of this type. + TIP: A given <<nng_socket.5#,`nng_socket`>> may have multiple listener objects, multiple <<nng_dialer.5#,dialer>> objects, or even some of both. diff --git a/docs/man/nng_pipe.5.adoc b/docs/man/nng_pipe.5.adoc index 4befd3e8..39247fbd 100644 --- a/docs/man/nng_pipe.5.adoc +++ b/docs/man/nng_pipe.5.adoc @@ -16,11 +16,11 @@ nng_pipe - communications pipe == SYNOPSIS [source, c] ------------ +---- #include <nng/nng.h> -typedef uint32_t nng_pipe; ------------ +typedef struct nng_pipe_s nng_pipe; +---- == DESCRIPTION @@ -32,6 +32,11 @@ single TCP or IPC connection.) Pipes are associated with either the listener or dialer that created them, and therefore are also automatically associated with a single socket. +IMPORTANT: The `nng_pipe` structure is always passed by value (both +for input parameters and return values), and should be treated opaquely. +Passing structures this way ensures gives the compiler a chance to perform +accurate type checks in functions passing values of this type. + TIP: Most applications should never concern themselves with individual pipes. However it is possible to access a pipe when more information about the source of a message is needed, or when more control is required over diff --git a/docs/man/nng_socket.5.adoc b/docs/man/nng_socket.5.adoc index 0dcdfa99..4711495f 100644 --- a/docs/man/nng_socket.5.adoc +++ b/docs/man/nng_socket.5.adoc @@ -19,7 +19,7 @@ nng_socket - socket handle ---- #include <nng/nng.h> -typedef uint32_t nng_socket; +typedef struct nng_socket_s nng_socket; ---- == DESCRIPTION @@ -34,9 +34,10 @@ may be connected to multiple transports at the same time. However, a given socket will have exactly one "`protocol`" associated with it, and is responsible for any state machines or other protocol-specific logic. -NOTE: Although `nng_socket` is an integer data type, these objects are not -ordinary file descriptors, and can only be used with the functions that -explicitly indicate that it safe and appropropate to do so. +IMPORTANT: The `nng_socket` structure is always passed by value (both +for input parameters and return values), and should be treated opaquely. +Passing structures this way ensures gives the compiler a chance to perform +accurate type checks in functions passing values of this type. Each `nng_socket` is created by a protocol-specific constructor, such as <<nng_rep_open.3#,`nng_rep_open()`>>. diff --git a/src/compat/nanomsg/nn.c b/src/compat/nanomsg/nn.c index e99c0ff3..0eb97298 100644 --- a/src/compat/nanomsg/nn.c +++ b/src/compat/nanomsg/nn.c @@ -221,15 +221,18 @@ nn_socket(int domain, int protocol) return (-1); } - return ((int) sock); + return ((int) sock.id); } int nn_close(int s) { - int rv; + int rv; + nng_socket sid; + + sid.id = (uint32_t) s; - if ((rv = nng_close((nng_socket) s)) != 0) { + if ((rv = nng_close(sid)) != 0) { nn_seterror(rv); return (-1); } @@ -241,12 +244,14 @@ nn_bind(int s, const char *addr) { int rv; nng_listener l; + nng_socket sid; - if ((rv = nng_listen((nng_socket) s, addr, &l, 0)) != 0) { + sid.id = (uint32_t) s; + if ((rv = nng_listen(sid, addr, &l, 0)) != 0) { nn_seterror(rv); return (-1); } - return ((int) l); + return ((int) l.id); } int @@ -254,13 +259,14 @@ nn_connect(int s, const char *addr) { int rv; nng_dialer d; + nng_socket sid; - if ((rv = nng_dial((nng_socket) s, addr, &d, NNG_FLAG_NONBLOCK)) != - 0) { + sid.id = (uint32_t) s; + if ((rv = nng_dial(sid, addr, &d, NNG_FLAG_NONBLOCK)) != 0) { nn_seterror(rv); return (-1); } - return ((int) d); + return ((int) d.id); } int @@ -268,6 +274,8 @@ nn_shutdown(int s, int ep) { int rv; (void) s; // Unused + nng_dialer d; + nng_listener l; // Socket is wired into the endpoint... so passing a bad endpoint // ID can result in affecting the wrong socket. But this requires @@ -276,8 +284,9 @@ nn_shutdown(int s, int ep) // Note that listeners and dialers share the same namespace // in the core, so we can close either one this way. - if (((rv = nng_dialer_close((nng_dialer) ep)) != 0) && - ((rv = nng_listener_close((nng_listener) ep)) != 0)) { + d.id = l.id = (uint32_t) ep; + if (((rv = nng_dialer_close(d)) != 0) && + ((rv = nng_listener_close(l)) != 0)) { nn_seterror(rv); return (-1); } @@ -405,10 +414,11 @@ nn_recv(int s, void *buf, size_t len, int flags) int nn_recvmsg(int s, struct nn_msghdr *mh, int flags) { - int rv; - nng_msg *msg; - size_t len; - int keep = 0; + int rv; + nng_msg * msg; + size_t len; + int keep = 0; + nng_socket sid; if ((flags = nn_flags(flags)) == -1) { return (-1); @@ -422,7 +432,8 @@ nn_recvmsg(int s, struct nn_msghdr *mh, int flags) return (-1); } - if ((rv = nng_recvmsg((nng_socket) s, &msg, flags)) != 0) { + sid.id = (uint32_t) s; + if ((rv = nng_recvmsg(sid, &msg, flags)) != 0) { nn_seterror(rv); return (-1); } @@ -523,12 +534,15 @@ nn_recvmsg(int s, struct nn_msghdr *mh, int flags) int nn_sendmsg(int s, const struct nn_msghdr *mh, int flags) { - nng_msg *msg = NULL; - nng_msg *cmsg = NULL; - char * cdata; - int keep = 0; - size_t sz; - int rv; + nng_msg * msg = NULL; + nng_msg * cmsg = NULL; + nng_socket sid; + char * cdata; + int keep = 0; + size_t sz; + int rv; + + sid.id = (uint32_t) s; if ((flags = nn_flags(flags)) == -1) { return (-1); @@ -629,7 +643,7 @@ nn_sendmsg(int s, const struct nn_msghdr *mh, int flags) } sz = nng_msg_len(msg); - if ((rv = nng_sendmsg((nng_socket) s, msg, flags)) != 0) { + if ((rv = nng_sendmsg(sid, msg, flags)) != 0) { if (!keep) { nng_msg_free(msg); } @@ -901,7 +915,10 @@ nn_getsockopt(int s, int nnlevel, int nnopt, void *valp, size_t *szp) { const char *name = NULL; int (*get)(nng_socket, void *, size_t *) = NULL; - int rv; + int rv; + nng_socket sid; + + sid.id = (uint32_t) s; for (unsigned i = 0; i < sizeof(options) / sizeof(options[0]); i++) { if ((options[i].nnlevel == nnlevel) && @@ -913,7 +930,7 @@ nn_getsockopt(int s, int nnlevel, int nnopt, void *valp, size_t *szp) } if (get != NULL) { - return (get((nng_socket) s, valp, szp)); + return (get(sid, valp, szp)); } if (name == NULL) { @@ -921,7 +938,7 @@ nn_getsockopt(int s, int nnlevel, int nnopt, void *valp, size_t *szp) return (-1); } - if ((rv = nng_getopt((nng_socket) s, name, valp, szp)) != 0) { + if ((rv = nng_getopt(sid, name, valp, szp)) != 0) { nn_seterror(rv); return (-1); } @@ -932,10 +949,13 @@ nn_getsockopt(int s, int nnlevel, int nnopt, void *valp, size_t *szp) int nn_setsockopt(int s, int nnlevel, int nnopt, const void *valp, size_t sz) { + nng_socket sid; const char *name = NULL; int (*set)(nng_socket, const void *, size_t) = NULL; int rv; + sid.id = (uint32_t) s; + for (unsigned i = 0; i < sizeof(options) / sizeof(options[0]); i++) { if ((options[i].nnlevel == nnlevel) && (options[i].nnopt == nnopt)) { @@ -947,7 +967,7 @@ nn_setsockopt(int s, int nnlevel, int nnopt, const void *valp, size_t sz) } if (set != NULL) { - return (set((nng_socket) s, valp, sz)); + return (set(sid, valp, sz)); } if (name == NULL) { @@ -955,7 +975,7 @@ nn_setsockopt(int s, int nnlevel, int nnopt, const void *valp, size_t sz) return (-1); } - if ((rv = nng_setopt((nng_socket) s, name, valp, sz)) != 0) { + if ((rv = nng_setopt(sid, name, valp, sz)) != 0) { nn_seterror(rv); return (-1); } @@ -996,9 +1016,14 @@ nn_cmsg_next(struct nn_msghdr *mh, struct nn_cmsghdr *first) int nn_device(int s1, int s2) { - int rv; + int rv; + nng_socket sid1; + nng_socket sid2; + + sid1.id = (uint32_t) s1; + sid2.id = (uint32_t) s2; - rv = nng_device((nng_socket) s1, (nng_socket) s2); + rv = nng_device(sid1, sid2); // rv must always be nonzero nn_seterror(rv); return (-1); @@ -1041,8 +1066,10 @@ nn_poll(struct nn_pollfd *fds, int nfds, int timeout) for (int i = 0; i < nfds; i++) { int fd; if (fds[i].events & NN_POLLIN) { - if ((rv = nng_getopt_int((nng_socket) fds[i].fd, - NNG_OPT_RECVFD, &fd)) != 0) { + nng_socket s; + s.id = fds[i].fd; + if ((rv = nng_getopt_int(s, NNG_OPT_RECVFD, &fd)) != + 0) { nn_seterror(rv); NNI_FREE_STRUCTS(pfd, nfds * 2); return (-1); @@ -1056,8 +1083,10 @@ nn_poll(struct nn_pollfd *fds, int nfds, int timeout) npfd++; } if (fds[i].events & NN_POLLOUT) { - if ((rv = nng_getopt_int((nng_socket) fds[i].fd, - NNG_OPT_SENDFD, &fd)) != 0) { + nng_socket s; + s.id = fds[i].fd; + if ((rv = nng_getopt_int(s, NNG_OPT_SENDFD, &fd)) != + 0) { nn_seterror(rv); NNI_FREE_STRUCTS(pfd, nfds * 2); return (-1); diff --git a/src/core/protocol.c b/src/core/protocol.c index e36bc31f..52b9b7fb 100644 --- a/src/core/protocol.c +++ b/src/core/protocol.c @@ -1,6 +1,6 @@ // -// Copyright 2017 Garrett D'Amore <garrett@damore.org> -// Copyright 2017 Capitar IT Group BV <info@capitar.com> +// Copyright 2018 Staysail Systems, Inc. <info@staysail.tech> +// Copyright 2018 Capitar IT Group BV <info@capitar.com> // // This software is supplied under the terms of the MIT License, a // copy of which should be located in the distribution where this @@ -62,7 +62,9 @@ nni_proto_open(nng_socket *sockidp, const nni_proto *proto) return (rv); } if ((rv = nni_sock_open(&sock, proto)) == 0) { - *sockidp = nni_sock_id(sock); // Keep socket held open. + nng_socket s; + s.id = nni_sock_id(sock); // Keep socket held open. + *sockidp = s; } return (rv); } @@ -31,14 +31,14 @@ nng_fini(void) } int -nng_close(nng_socket sid) +nng_close(nng_socket s) { int rv; nni_sock *sock; // Close is special, because we still want to be able to get // a hold on the socket even if shutdown was called. - if ((rv = nni_sock_find(&sock, sid)) != 0) { + if ((rv = nni_sock_find(&sock, s.id)) != 0) { return (rv); } // No release -- close releases it. @@ -77,14 +77,14 @@ nng_strfree(char *s) } int -nng_recv(nng_socket sid, void *buf, size_t *szp, int flags) +nng_recv(nng_socket s, void *buf, size_t *szp, int flags) { nng_msg *msg; int rv; // Note that while it would be nice to make this a zero copy operation, // its not normally possible if a size was specified. - if ((rv = nng_recvmsg(sid, &msg, flags & ~(NNG_FLAG_ALLOC))) != 0) { + if ((rv = nng_recvmsg(s, &msg, flags & ~(NNG_FLAG_ALLOC))) != 0) { return (rv); } if (!(flags & NNG_FLAG_ALLOC)) { @@ -113,7 +113,7 @@ nng_recv(nng_socket sid, void *buf, size_t *szp, int flags) } int -nng_recvmsg(nng_socket sid, nng_msg **msgp, int flags) +nng_recvmsg(nng_socket s, nng_msg **msgp, int flags) { int rv; nng_aio *ap; @@ -127,7 +127,7 @@ nng_recvmsg(nng_socket sid, nng_msg **msgp, int flags) nng_aio_set_timeout(ap, NNG_DURATION_DEFAULT); } - nng_recv_aio(sid, ap); + nng_recv_aio(s, ap); nng_aio_wait(ap); if ((rv = nng_aio_result(ap)) == 0) { @@ -142,7 +142,7 @@ nng_recvmsg(nng_socket sid, nng_msg **msgp, int flags) } int -nng_send(nng_socket sid, void *buf, size_t len, int flags) +nng_send(nng_socket s, void *buf, size_t len, int flags) { nng_msg *msg; int rv; @@ -151,7 +151,7 @@ nng_send(nng_socket sid, void *buf, size_t len, int flags) return (rv); } memcpy(nng_msg_body(msg), buf, len); - if ((rv = nng_sendmsg(sid, msg, flags)) != 0) { + if ((rv = nng_sendmsg(s, msg, flags)) != 0) { nng_msg_free(msg); } if (flags & NNG_FLAG_ALLOC) { @@ -161,7 +161,7 @@ nng_send(nng_socket sid, void *buf, size_t len, int flags) } int -nng_sendmsg(nng_socket sid, nng_msg *msg, int flags) +nng_sendmsg(nng_socket s, nng_msg *msg, int flags) { int rv; nng_aio *ap; @@ -176,7 +176,7 @@ nng_sendmsg(nng_socket sid, nng_msg *msg, int flags) } nng_aio_set_msg(ap, msg); - nng_send_aio(sid, ap); + nng_send_aio(s, ap); nng_aio_wait(ap); rv = nng_aio_result(ap); @@ -192,12 +192,12 @@ nng_sendmsg(nng_socket sid, nng_msg *msg, int flags) } void -nng_recv_aio(nng_socket sid, nng_aio *aio) +nng_recv_aio(nng_socket s, nng_aio *aio) { nni_sock *sock; int rv; - if ((rv = nni_sock_find(&sock, sid)) != 0) { + if ((rv = nni_sock_find(&sock, s.id)) != 0) { if (nni_aio_begin(aio) == 0) { nni_aio_finish_error(aio, rv); } @@ -208,7 +208,7 @@ nng_recv_aio(nng_socket sid, nng_aio *aio) } void -nng_send_aio(nng_socket sid, nng_aio *aio) +nng_send_aio(nng_socket s, nng_aio *aio) { nni_sock *sock; int rv; @@ -219,7 +219,7 @@ nng_send_aio(nng_socket sid, nng_aio *aio) } return; } - if ((rv = nni_sock_find(&sock, sid)) != 0) { + if ((rv = nni_sock_find(&sock, s.id)) != 0) { if (nni_aio_begin(aio) == 0) { nni_aio_finish_error(aio, rv); } @@ -230,20 +230,22 @@ nng_send_aio(nng_socket sid, nng_aio *aio) } int -nng_ctx_open(nng_ctx *idp, nng_socket sid) +nng_ctx_open(nng_ctx *idp, nng_socket s) { nni_sock *sock; nni_ctx * ctx; int rv; + nng_ctx id; - if ((rv = nni_sock_find(&sock, sid)) != 0) { + if ((rv = nni_sock_find(&sock, s.id)) != 0) { return (rv); } if ((rv = nni_ctx_open(&ctx, sock)) != 0) { nni_sock_rele(sock); return (rv); } - *idp = nni_ctx_id(ctx); + id.id = nni_ctx_id(ctx); + *idp = id; nni_ctx_rele(ctx); nni_sock_rele(sock); return (0); @@ -255,7 +257,7 @@ nng_ctx_close(nng_ctx cid) int rv; nni_ctx *ctx; - if ((rv = nni_ctx_find(&ctx, cid, true)) != 0) { + if ((rv = nni_ctx_find(&ctx, cid.id, true)) != 0) { return (rv); } // no release, close releases implicitly. @@ -269,7 +271,7 @@ nng_ctx_recv(nng_ctx cid, nng_aio *aio) int rv; nni_ctx *ctx; - if ((rv = nni_ctx_find(&ctx, cid, false)) != 0) { + if ((rv = nni_ctx_find(&ctx, cid.id, false)) != 0) { if (nni_aio_begin(aio) == 0) { nni_aio_finish_error(aio, rv); } @@ -291,7 +293,7 @@ nng_ctx_send(nng_ctx cid, nng_aio *aio) } return; } - if ((rv = nni_ctx_find(&ctx, cid, false)) != 0) { + if ((rv = nni_ctx_find(&ctx, cid.id, false)) != 0) { if (nni_aio_begin(aio) == 0) { nni_aio_finish_error(aio, rv); } @@ -310,7 +312,7 @@ nng_ctx_getx(nng_ctx id, const char *n, void *v, size_t *szp, int t) if ((rv = nni_init()) != 0) { return (rv); } - if ((rv = nni_ctx_find(&ctx, id, false)) != 0) { + if ((rv = nni_ctx_find(&ctx, id.id, false)) != 0) { return (rv); } rv = nni_ctx_getopt(ctx, n, v, szp, t); @@ -361,7 +363,7 @@ nng_ctx_setx(nng_ctx id, const char *n, const void *v, size_t sz, int t) if ((rv = nni_init()) != 0) { return (rv); } - if ((rv = nni_ctx_find(&ctx, id, false)) != 0) { + if ((rv = nni_ctx_find(&ctx, id.id, false)) != 0) { return (rv); } rv = nni_ctx_setopt(ctx, n, v, sz, t); @@ -400,13 +402,13 @@ nng_ctx_setopt_ms(nng_ctx id, const char *name, nng_duration v) } int -nng_dial(nng_socket sid, const char *addr, nng_dialer *dp, int flags) +nng_dial(nng_socket s, const char *addr, nng_dialer *dp, int flags) { nni_ep * ep; int rv; nni_sock *sock; - if ((rv = nni_sock_find(&sock, sid)) != 0) { + if ((rv = nni_sock_find(&sock, s.id)) != 0) { return (rv); } if ((rv = nni_ep_create_dialer(&ep, sock, addr)) != 0) { @@ -419,7 +421,9 @@ nng_dial(nng_socket sid, const char *addr, nng_dialer *dp, int flags) return (rv); } if (dp != NULL) { - *dp = nni_ep_id(ep); + nng_dialer d; + d.id = nni_ep_id(ep); + *dp = d; } nni_ep_rele(ep); nni_sock_rele(sock); @@ -427,13 +431,13 @@ nng_dial(nng_socket sid, const char *addr, nng_dialer *dp, int flags) } int -nng_listen(nng_socket sid, const char *addr, nng_listener *lp, int flags) +nng_listen(nng_socket s, const char *addr, nng_listener *lp, int flags) { nni_ep * ep; int rv; nni_sock *sock; - if ((rv = nni_sock_find(&sock, sid)) != 0) { + if ((rv = nni_sock_find(&sock, s.id)) != 0) { return (rv); } if ((rv = nni_ep_create_listener(&ep, sock, addr)) != 0) { @@ -447,7 +451,9 @@ nng_listen(nng_socket sid, const char *addr, nng_listener *lp, int flags) } if (lp != NULL) { - *lp = nni_ep_id(ep); + nng_listener l; + l.id = nni_ep_id(ep); + *lp = l; } nni_ep_rele(ep); nni_sock_rele(sock); @@ -455,32 +461,34 @@ nng_listen(nng_socket sid, const char *addr, nng_listener *lp, int flags) } int -nng_listener_create(nng_listener *lp, nng_socket sid, const char *addr) +nng_listener_create(nng_listener *lp, nng_socket s, const char *addr) { - nni_sock *s; - nni_ep * ep; - int rv; + nni_sock * sock; + nni_ep * ep; + int rv; + nng_listener l; - if ((rv = nni_sock_find(&s, sid)) != 0) { + if ((rv = nni_sock_find(&sock, s.id)) != 0) { return (rv); } - if ((rv = nni_ep_create_listener(&ep, s, addr)) != 0) { - nni_sock_rele(s); + if ((rv = nni_ep_create_listener(&ep, sock, addr)) != 0) { + nni_sock_rele(sock); return (rv); } - *lp = nni_ep_id(ep); + l.id = nni_ep_id(ep); + *lp = l; nni_ep_rele(ep); - nni_sock_rele(s); + nni_sock_rele(sock); return (0); } int -nng_listener_start(nng_listener id, int flags) +nng_listener_start(nng_listener l, int flags) { nni_ep *ep; int rv; - if ((rv = nni_ep_find(&ep, id)) != 0) { + if ((rv = nni_ep_find(&ep, l.id)) != 0) { return (rv); } rv = nni_ep_listen(ep, flags); @@ -489,32 +497,34 @@ nng_listener_start(nng_listener id, int flags) } int -nng_dialer_create(nng_dialer *dp, nng_socket sid, const char *addr) +nng_dialer_create(nng_dialer *dp, nng_socket s, const char *addr) { - nni_sock *s; - nni_ep * ep; - int rv; + nni_sock * sock; + nni_ep * ep; + int rv; + nng_dialer d; - if ((rv = nni_sock_find(&s, sid)) != 0) { + if ((rv = nni_sock_find(&sock, s.id)) != 0) { return (rv); } - if ((rv = nni_ep_create_dialer(&ep, s, addr)) != 0) { - nni_sock_rele(s); + if ((rv = nni_ep_create_dialer(&ep, sock, addr)) != 0) { + nni_sock_rele(sock); return (rv); } - *dp = nni_ep_id(ep); + d.id = nni_ep_id(ep); + *dp = d; nni_ep_rele(ep); - nni_sock_rele(s); + nni_sock_rele(sock); return (0); } int -nng_dialer_start(nng_dialer id, int flags) +nng_dialer_start(nng_dialer d, int flags) { nni_ep *ep; int rv; - if ((rv = nni_ep_find(&ep, id)) != 0) { + if ((rv = nni_ep_find(&ep, d.id)) != 0) { return (rv); } rv = nni_ep_dial(ep, flags); @@ -566,251 +576,250 @@ nng_ep_getx(uint32_t id, const char *n, void *v, size_t *szp, int mode, int t) } static int -nng_dialer_setx(nng_dialer id, const char *nm, const void *v, size_t sz, int t) +nng_dialer_setx(nng_dialer d, const char *nm, const void *v, size_t sz, int t) { - return (nng_ep_setx(id, nm, v, sz, NNI_EP_MODE_DIAL, t)); + return (nng_ep_setx(d.id, nm, v, sz, NNI_EP_MODE_DIAL, t)); } int -nng_dialer_setopt(nng_dialer id, const char *name, const void *v, size_t sz) +nng_dialer_setopt(nng_dialer d, const char *name, const void *v, size_t sz) { - return (nng_dialer_setx(id, name, v, sz, NNI_TYPE_OPAQUE)); + return (nng_dialer_setx(d, name, v, sz, NNI_TYPE_OPAQUE)); } int -nng_dialer_setopt_bool(nng_dialer id, const char *name, bool v) +nng_dialer_setopt_bool(nng_dialer d, const char *name, bool v) { - return (nng_dialer_setx(id, name, &v, sizeof(v), NNI_TYPE_BOOL)); + return (nng_dialer_setx(d, name, &v, sizeof(v), NNI_TYPE_BOOL)); } int -nng_dialer_setopt_int(nng_dialer id, const char *name, int v) +nng_dialer_setopt_int(nng_dialer d, const char *name, int v) { - return (nng_dialer_setx(id, name, &v, sizeof(v), NNI_TYPE_INT32)); + return (nng_dialer_setx(d, name, &v, sizeof(v), NNI_TYPE_INT32)); } int -nng_dialer_setopt_size(nng_dialer id, const char *name, size_t v) +nng_dialer_setopt_size(nng_dialer d, const char *name, size_t v) { - return (nng_dialer_setx(id, name, &v, sizeof(v), NNI_TYPE_SIZE)); + return (nng_dialer_setx(d, name, &v, sizeof(v), NNI_TYPE_SIZE)); } int -nng_dialer_setopt_ms(nng_dialer id, const char *name, nng_duration v) +nng_dialer_setopt_ms(nng_dialer d, const char *name, nng_duration v) { - return (nng_dialer_setx(id, name, &v, sizeof(v), NNI_TYPE_DURATION)); + return (nng_dialer_setx(d, name, &v, sizeof(v), NNI_TYPE_DURATION)); } int -nng_dialer_setopt_uint64(nng_dialer id, const char *name, uint64_t v) +nng_dialer_setopt_uint64(nng_dialer d, const char *name, uint64_t v) { - return (nng_dialer_setx(id, name, &v, sizeof(v), NNI_TYPE_UINT64)); + return (nng_dialer_setx(d, name, &v, sizeof(v), NNI_TYPE_UINT64)); } int -nng_dialer_setopt_ptr(nng_dialer id, const char *name, void *v) +nng_dialer_setopt_ptr(nng_dialer d, const char *name, void *v) { - return (nng_dialer_setx(id, name, &v, sizeof(v), NNI_TYPE_POINTER)); + return (nng_dialer_setx(d, name, &v, sizeof(v), NNI_TYPE_POINTER)); } int -nng_dialer_setopt_string(nng_dialer id, const char *name, const char *v) +nng_dialer_setopt_string(nng_dialer d, const char *name, const char *v) { - return (nng_dialer_setx(id, name, v, strlen(v) + 1, NNI_TYPE_STRING)); + return (nng_dialer_setx(d, name, v, strlen(v) + 1, NNI_TYPE_STRING)); } static int -nng_dialer_getx(nng_dialer id, const char *n, void *v, size_t *szp, int t) +nng_dialer_getx(nng_dialer d, const char *n, void *v, size_t *szp, int t) { - return (nng_ep_getx(id, n, v, szp, NNI_EP_MODE_DIAL, t)); + return (nng_ep_getx(d.id, n, v, szp, NNI_EP_MODE_DIAL, t)); } int -nng_dialer_getopt(nng_dialer id, const char *name, void *val, size_t *szp) +nng_dialer_getopt(nng_dialer d, const char *name, void *val, size_t *szp) { - return (nng_dialer_getx(id, name, val, szp, NNI_TYPE_OPAQUE)); + return (nng_dialer_getx(d, name, val, szp, NNI_TYPE_OPAQUE)); } int -nng_dialer_getopt_bool(nng_dialer id, const char *name, bool *vp) +nng_dialer_getopt_bool(nng_dialer d, const char *name, bool *vp) { size_t sz = sizeof(*vp); - return (nng_dialer_getx(id, name, vp, &sz, NNI_TYPE_BOOL)); + return (nng_dialer_getx(d, name, vp, &sz, NNI_TYPE_BOOL)); } int -nng_dialer_getopt_int(nng_dialer id, const char *name, int *vp) +nng_dialer_getopt_int(nng_dialer d, const char *name, int *vp) { size_t sz = sizeof(*vp); - return (nng_dialer_getx(id, name, vp, &sz, NNI_TYPE_INT32)); + return (nng_dialer_getx(d, name, vp, &sz, NNI_TYPE_INT32)); } int -nng_dialer_getopt_size(nng_dialer id, const char *name, size_t *vp) +nng_dialer_getopt_size(nng_dialer d, const char *name, size_t *vp) { size_t sz = sizeof(*vp); - return (nng_dialer_getx(id, name, vp, &sz, NNI_TYPE_SIZE)); + return (nng_dialer_getx(d, name, vp, &sz, NNI_TYPE_SIZE)); } int -nng_dialer_getopt_sockaddr(nng_dialer id, const char *name, nng_sockaddr *vp) +nng_dialer_getopt_sockaddr(nng_dialer d, const char *name, nng_sockaddr *vp) { size_t sz = sizeof(*vp); - return (nng_dialer_getx(id, name, vp, &sz, NNI_TYPE_SOCKADDR)); + return (nng_dialer_getx(d, name, vp, &sz, NNI_TYPE_SOCKADDR)); } int -nng_dialer_getopt_uint64(nng_dialer id, const char *name, uint64_t *vp) +nng_dialer_getopt_uint64(nng_dialer d, const char *name, uint64_t *vp) { size_t sz = sizeof(*vp); - return (nng_dialer_getx(id, name, vp, &sz, NNI_TYPE_UINT64)); + return (nng_dialer_getx(d, name, vp, &sz, NNI_TYPE_UINT64)); } int -nng_dialer_getopt_ptr(nng_dialer id, const char *name, void **vp) +nng_dialer_getopt_ptr(nng_dialer d, const char *name, void **vp) { size_t sz = sizeof(*vp); - return (nng_dialer_getx(id, name, vp, &sz, NNI_TYPE_POINTER)); + return (nng_dialer_getx(d, name, vp, &sz, NNI_TYPE_POINTER)); } int -nng_dialer_getopt_string(nng_dialer id, const char *name, char **vp) +nng_dialer_getopt_string(nng_dialer d, const char *name, char **vp) { size_t sz = sizeof(*vp); - return (nng_dialer_getx(id, name, vp, &sz, NNI_TYPE_STRING)); + return (nng_dialer_getx(d, name, vp, &sz, NNI_TYPE_STRING)); } int -nng_dialer_getopt_ms(nng_dialer id, const char *name, nng_duration *vp) +nng_dialer_getopt_ms(nng_dialer d, const char *name, nng_duration *vp) { size_t sz = sizeof(*vp); - return (nng_dialer_getx(id, name, vp, &sz, NNI_TYPE_DURATION)); + return (nng_dialer_getx(d, name, vp, &sz, NNI_TYPE_DURATION)); } int nng_listener_setx( - nng_listener id, const char *name, const void *v, size_t sz, int t) + nng_listener l, const char *name, const void *v, size_t sz, int t) { - return (nng_ep_setx(id, name, v, sz, NNI_EP_MODE_LISTEN, t)); + return (nng_ep_setx(l.id, name, v, sz, NNI_EP_MODE_LISTEN, t)); } int -nng_listener_setopt( - nng_listener id, const char *name, const void *v, size_t sz) +nng_listener_setopt(nng_listener l, const char *name, const void *v, size_t sz) { - return (nng_listener_setx(id, name, v, sz, NNI_TYPE_OPAQUE)); + return (nng_listener_setx(l, name, v, sz, NNI_TYPE_OPAQUE)); } int -nng_listener_setopt_bool(nng_listener id, const char *name, bool v) +nng_listener_setopt_bool(nng_listener l, const char *name, bool v) { - return (nng_listener_setx(id, name, &v, sizeof(v), NNI_TYPE_BOOL)); + return (nng_listener_setx(l, name, &v, sizeof(v), NNI_TYPE_BOOL)); } int -nng_listener_setopt_int(nng_listener id, const char *name, int v) +nng_listener_setopt_int(nng_listener l, const char *name, int v) { - return (nng_listener_setx(id, name, &v, sizeof(v), NNI_TYPE_INT32)); + return (nng_listener_setx(l, name, &v, sizeof(v), NNI_TYPE_INT32)); } int -nng_listener_setopt_size(nng_listener id, const char *name, size_t v) +nng_listener_setopt_size(nng_listener l, const char *name, size_t v) { - return (nng_listener_setx(id, name, &v, sizeof(v), NNI_TYPE_SIZE)); + return (nng_listener_setx(l, name, &v, sizeof(v), NNI_TYPE_SIZE)); } int -nng_listener_setopt_ms(nng_listener id, const char *name, nng_duration v) +nng_listener_setopt_ms(nng_listener l, const char *name, nng_duration v) { - return (nng_listener_setx(id, name, &v, sizeof(v), NNI_TYPE_DURATION)); + return (nng_listener_setx(l, name, &v, sizeof(v), NNI_TYPE_DURATION)); } int -nng_listener_setopt_uint64(nng_listener id, const char *name, uint64_t v) +nng_listener_setopt_uint64(nng_listener l, const char *name, uint64_t v) { - return (nng_listener_setx(id, name, &v, sizeof(v), NNI_TYPE_UINT64)); + return (nng_listener_setx(l, name, &v, sizeof(v), NNI_TYPE_UINT64)); } int -nng_listener_setopt_ptr(nng_listener id, const char *name, void *v) +nng_listener_setopt_ptr(nng_listener l, const char *name, void *v) { - return (nng_listener_setx(id, name, &v, sizeof(v), NNI_TYPE_POINTER)); + return (nng_listener_setx(l, name, &v, sizeof(v), NNI_TYPE_POINTER)); } int -nng_listener_setopt_string(nng_listener id, const char *n, const char *v) +nng_listener_setopt_string(nng_listener l, const char *n, const char *v) { - return (nng_listener_setx(id, n, v, strlen(v) + 1, NNI_TYPE_STRING)); + return (nng_listener_setx(l, n, v, strlen(v) + 1, NNI_TYPE_STRING)); } int nng_listener_getx( - nng_listener id, const char *name, void *v, size_t *szp, int t) + nng_listener l, const char *name, void *v, size_t *szp, int t) { - return (nng_ep_getx(id, name, v, szp, NNI_EP_MODE_LISTEN, t)); + return (nng_ep_getx(l.id, name, v, szp, NNI_EP_MODE_LISTEN, t)); } int -nng_listener_getopt(nng_listener id, const char *name, void *v, size_t *szp) +nng_listener_getopt(nng_listener l, const char *name, void *v, size_t *szp) { - return (nng_listener_getx(id, name, v, szp, NNI_TYPE_OPAQUE)); + return (nng_listener_getx(l, name, v, szp, NNI_TYPE_OPAQUE)); } int -nng_listener_getopt_bool(nng_listener id, const char *name, bool *vp) +nng_listener_getopt_bool(nng_listener l, const char *name, bool *vp) { size_t sz = sizeof(*vp); - return (nng_listener_getx(id, name, vp, &sz, NNI_TYPE_BOOL)); + return (nng_listener_getx(l, name, vp, &sz, NNI_TYPE_BOOL)); } int -nng_listener_getopt_int(nng_listener id, const char *name, int *vp) +nng_listener_getopt_int(nng_listener l, const char *name, int *vp) { size_t sz = sizeof(*vp); - return (nng_listener_getx(id, name, vp, &sz, NNI_TYPE_INT32)); + return (nng_listener_getx(l, name, vp, &sz, NNI_TYPE_INT32)); } int -nng_listener_getopt_size(nng_listener id, const char *name, size_t *vp) +nng_listener_getopt_size(nng_listener l, const char *name, size_t *vp) { size_t sz = sizeof(*vp); - return (nng_listener_getx(id, name, vp, &sz, NNI_TYPE_SIZE)); + return (nng_listener_getx(l, name, vp, &sz, NNI_TYPE_SIZE)); } int nng_listener_getopt_sockaddr( - nng_listener id, const char *name, nng_sockaddr *vp) + nng_listener l, const char *name, nng_sockaddr *vp) { size_t sz = sizeof(*vp); - return (nng_listener_getx(id, name, vp, &sz, NNI_TYPE_SOCKADDR)); + return (nng_listener_getx(l, name, vp, &sz, NNI_TYPE_SOCKADDR)); } int -nng_listener_getopt_uint64(nng_listener id, const char *name, uint64_t *vp) +nng_listener_getopt_uint64(nng_listener l, const char *name, uint64_t *vp) { size_t sz = sizeof(*vp); - return (nng_listener_getx(id, name, vp, &sz, NNI_TYPE_UINT64)); + return (nng_listener_getx(l, name, vp, &sz, NNI_TYPE_UINT64)); } int -nng_listener_getopt_ptr(nng_listener id, const char *name, void **vp) +nng_listener_getopt_ptr(nng_listener l, const char *name, void **vp) { size_t sz = sizeof(*vp); - return (nng_listener_getx(id, name, vp, &sz, NNI_TYPE_POINTER)); + return (nng_listener_getx(l, name, vp, &sz, NNI_TYPE_POINTER)); } int -nng_listener_getopt_string(nng_listener id, const char *name, char **vp) +nng_listener_getopt_string(nng_listener l, const char *name, char **vp) { size_t sz = sizeof(*vp); - return (nng_listener_getx(id, name, vp, &sz, NNI_TYPE_STRING)); + return (nng_listener_getx(l, name, vp, &sz, NNI_TYPE_STRING)); } int -nng_listener_getopt_ms(nng_listener id, const char *name, nng_duration *vp) +nng_listener_getopt_ms(nng_listener l, const char *name, nng_duration *vp) { size_t sz = sizeof(*vp); - return (nng_listener_getx(id, name, vp, &sz, NNI_TYPE_DURATION)); + return (nng_listener_getx(l, name, vp, &sz, NNI_TYPE_DURATION)); } static int @@ -834,17 +843,17 @@ nng_ep_close(uint32_t id, int mode) int nng_dialer_close(nng_dialer d) { - return (nng_ep_close((uint32_t) d, NNI_EP_MODE_DIAL)); + return (nng_ep_close(d.id, NNI_EP_MODE_DIAL)); } int nng_listener_close(nng_listener l) { - return (nng_ep_close((uint32_t) l, NNI_EP_MODE_LISTEN)); + return (nng_ep_close(l.id, NNI_EP_MODE_LISTEN)); } static int -nng_setx(nng_socket sid, const char *name, const void *val, size_t sz, int t) +nng_setx(nng_socket s, const char *name, const void *val, size_t sz, int t) { nni_sock *sock; int rv; @@ -852,7 +861,7 @@ nng_setx(nng_socket sid, const char *name, const void *val, size_t sz, int t) if ((rv = nni_init()) != 0) { return (rv); } - if ((rv = nni_sock_find(&sock, sid)) != 0) { + if ((rv = nni_sock_find(&sock, s.id)) != 0) { return (rv); } rv = nni_sock_setopt(sock, name, val, sz, t); @@ -861,13 +870,13 @@ nng_setx(nng_socket sid, const char *name, const void *val, size_t sz, int t) } int -nng_setopt(nng_socket sid, const char *name, const void *val, size_t sz) +nng_setopt(nng_socket s, const char *name, const void *val, size_t sz) { - return (nng_setx(sid, name, val, sz, NNI_TYPE_OPAQUE)); + return (nng_setx(s, name, val, sz, NNI_TYPE_OPAQUE)); } static int -nng_getx(nng_socket sid, const char *name, void *val, size_t *szp, int t) +nng_getx(nng_socket s, const char *name, void *val, size_t *szp, int t) { nni_sock *sock; int rv; @@ -875,7 +884,7 @@ nng_getx(nng_socket sid, const char *name, void *val, size_t *szp, int t) if ((rv = nni_init()) != 0) { return (rv); } - if ((rv = nni_sock_find(&sock, sid)) != 0) { + if ((rv = nni_sock_find(&sock, s.id)) != 0) { return (rv); } rv = nni_sock_getopt(sock, name, val, szp, t); @@ -884,101 +893,101 @@ nng_getx(nng_socket sid, const char *name, void *val, size_t *szp, int t) } int -nng_getopt(nng_socket sid, const char *name, void *val, size_t *szp) +nng_getopt(nng_socket s, const char *name, void *val, size_t *szp) { - return (nng_getx(sid, name, val, szp, NNI_TYPE_OPAQUE)); + return (nng_getx(s, name, val, szp, NNI_TYPE_OPAQUE)); } // Convenience option wrappers. int -nng_setopt_int(nng_socket sid, const char *name, int val) +nng_setopt_int(nng_socket s, const char *name, int val) { - return (nng_setx(sid, name, &val, sizeof(val), NNI_TYPE_INT32)); + return (nng_setx(s, name, &val, sizeof(val), NNI_TYPE_INT32)); } int -nng_setopt_bool(nng_socket sid, const char *name, bool val) +nng_setopt_bool(nng_socket s, const char *name, bool val) { - return (nng_setx(sid, name, &val, sizeof(val), NNI_TYPE_BOOL)); + return (nng_setx(s, name, &val, sizeof(val), NNI_TYPE_BOOL)); } int -nng_setopt_size(nng_socket sid, const char *name, size_t val) +nng_setopt_size(nng_socket s, const char *name, size_t val) { - return (nng_setx(sid, name, &val, sizeof(val), NNI_TYPE_SIZE)); + return (nng_setx(s, name, &val, sizeof(val), NNI_TYPE_SIZE)); } int -nng_setopt_ms(nng_socket sid, const char *name, nng_duration val) +nng_setopt_ms(nng_socket s, const char *name, nng_duration val) { - return (nng_setx(sid, name, &val, sizeof(val), NNI_TYPE_DURATION)); + return (nng_setx(s, name, &val, sizeof(val), NNI_TYPE_DURATION)); } int -nng_setopt_uint64(nng_socket sid, const char *name, uint64_t val) +nng_setopt_uint64(nng_socket s, const char *name, uint64_t val) { - return (nng_setx(sid, name, &val, sizeof(val), NNI_TYPE_UINT64)); + return (nng_setx(s, name, &val, sizeof(val), NNI_TYPE_UINT64)); } int -nng_setopt_ptr(nng_socket sid, const char *name, void *val) +nng_setopt_ptr(nng_socket s, const char *name, void *val) { - return (nng_setx(sid, name, &val, sizeof(val), NNI_TYPE_POINTER)); + return (nng_setx(s, name, &val, sizeof(val), NNI_TYPE_POINTER)); } int -nng_setopt_string(nng_socket sid, const char *name, const char *val) +nng_setopt_string(nng_socket s, const char *name, const char *val) { - return (nng_setx(sid, name, val, strlen(val) + 1, NNI_TYPE_STRING)); + return (nng_setx(s, name, val, strlen(val) + 1, NNI_TYPE_STRING)); } int -nng_getopt_bool(nng_socket sid, const char *name, bool *valp) +nng_getopt_bool(nng_socket s, const char *name, bool *valp) { size_t sz = sizeof(*valp); - return (nng_getx(sid, name, valp, &sz, NNI_TYPE_BOOL)); + return (nng_getx(s, name, valp, &sz, NNI_TYPE_BOOL)); } int -nng_getopt_int(nng_socket sid, const char *name, int *valp) +nng_getopt_int(nng_socket s, const char *name, int *valp) { size_t sz = sizeof(*valp); - return (nng_getx(sid, name, valp, &sz, NNI_TYPE_INT32)); + return (nng_getx(s, name, valp, &sz, NNI_TYPE_INT32)); } int -nng_getopt_size(nng_socket sid, const char *name, size_t *valp) +nng_getopt_size(nng_socket s, const char *name, size_t *valp) { size_t sz = sizeof(*valp); - return (nng_getx(sid, name, valp, &sz, NNI_TYPE_SIZE)); + return (nng_getx(s, name, valp, &sz, NNI_TYPE_SIZE)); } int -nng_getopt_uint64(nng_socket sid, const char *name, uint64_t *valp) +nng_getopt_uint64(nng_socket s, const char *name, uint64_t *valp) { size_t sz = sizeof(*valp); - return (nng_getx(sid, name, valp, &sz, NNI_TYPE_UINT64)); + return (nng_getx(s, name, valp, &sz, NNI_TYPE_UINT64)); } int -nng_getopt_ms(nng_socket sid, const char *name, nng_duration *valp) +nng_getopt_ms(nng_socket s, const char *name, nng_duration *valp) { size_t sz = sizeof(*valp); - return (nng_getx(sid, name, valp, &sz, NNI_TYPE_DURATION)); + return (nng_getx(s, name, valp, &sz, NNI_TYPE_DURATION)); } int -nng_getopt_ptr(nng_socket sid, const char *name, void **valp) +nng_getopt_ptr(nng_socket s, const char *name, void **valp) { size_t sz = sizeof(*valp); - return (nng_getx(sid, name, valp, &sz, NNI_TYPE_DURATION)); + return (nng_getx(s, name, valp, &sz, NNI_TYPE_DURATION)); } int -nng_getopt_string(nng_socket sid, const char *name, char **valp) +nng_getopt_string(nng_socket s, const char *name, char **valp) { size_t sz = sizeof(*valp); - return (nng_getx(sid, name, valp, &sz, NNI_TYPE_STRING)); + return (nng_getx(s, name, valp, &sz, NNI_TYPE_STRING)); } int @@ -988,13 +997,13 @@ nng_device(nng_socket s1, nng_socket s2) nni_sock *sock1 = NULL; nni_sock *sock2 = NULL; - if ((s1 > 0) && (s1 != (nng_socket) -1)) { - if ((rv = nni_sock_find(&sock1, s1)) != 0) { + if ((s1.id > 0) && (s1.id != (uint32_t) -1)) { + if ((rv = nni_sock_find(&sock1, s1.id)) != 0) { return (rv); } } - if (((s2 > 0) && (s2 != (nng_socket) -1)) && (s2 != s1)) { - if ((rv = nni_sock_find(&sock2, s2)) != 0) { + if (((s2.id > 0) && (s2.id != (uint32_t) -1)) && (s2.id != s1.id)) { + if ((rv = nni_sock_find(&sock2, s2.id)) != 0) { nni_sock_rele(sock1); return (rv); } @@ -1079,7 +1088,7 @@ nng_strerror(int num) } static int -nng_pipe_getopt_x(nng_pipe id, const char *name, void *val, size_t *szp, int t) +nng_pipe_getx(nng_pipe id, const char *name, void *val, size_t *szp, int t) { int rv; nni_pipe *p; @@ -1087,7 +1096,7 @@ nng_pipe_getopt_x(nng_pipe id, const char *name, void *val, size_t *szp, int t) if ((rv = nni_init()) < 0) { return (rv); } - if ((rv = nni_pipe_find(&p, id)) != 0) { + if ((rv = nni_pipe_find(&p, id.id)) != 0) { return (rv); } rv = nni_pipe_getopt(p, name, val, szp, t); @@ -1096,74 +1105,74 @@ nng_pipe_getopt_x(nng_pipe id, const char *name, void *val, size_t *szp, int t) } int -nng_pipe_getopt(nng_pipe id, const char *name, void *val, size_t *szp) +nng_pipe_getopt(nng_pipe p, const char *name, void *val, size_t *szp) { - return (nng_pipe_getopt_x(id, name, val, szp, NNI_TYPE_OPAQUE)); + return (nng_pipe_getx(p, name, val, szp, NNI_TYPE_OPAQUE)); } int -nng_pipe_getopt_bool(nng_pipe id, const char *name, bool *valp) +nng_pipe_getopt_bool(nng_pipe p, const char *name, bool *valp) { size_t sz = sizeof(*valp); - return (nng_pipe_getopt_x(id, name, valp, &sz, NNI_TYPE_BOOL)); + return (nng_pipe_getx(p, name, valp, &sz, NNI_TYPE_BOOL)); } int -nng_pipe_getopt_int(nng_pipe id, const char *name, int *valp) +nng_pipe_getopt_int(nng_pipe p, const char *name, int *valp) { size_t sz = sizeof(*valp); - return (nng_pipe_getopt_x(id, name, valp, &sz, NNI_TYPE_INT32)); + return (nng_pipe_getx(p, name, valp, &sz, NNI_TYPE_INT32)); } int -nng_pipe_getopt_size(nng_pipe id, const char *name, size_t *valp) +nng_pipe_getopt_size(nng_pipe p, const char *name, size_t *valp) { size_t sz = sizeof(*valp); - return (nng_pipe_getopt_x(id, name, valp, &sz, NNI_TYPE_SIZE)); + return (nng_pipe_getx(p, name, valp, &sz, NNI_TYPE_SIZE)); } int -nng_pipe_getopt_uint64(nng_pipe id, const char *name, uint64_t *valp) +nng_pipe_getopt_uint64(nng_pipe p, const char *name, uint64_t *valp) { size_t sz = sizeof(*valp); - return (nng_pipe_getopt_x(id, name, valp, &sz, NNI_TYPE_UINT64)); + return (nng_pipe_getx(p, name, valp, &sz, NNI_TYPE_UINT64)); } int -nng_pipe_getopt_ms(nng_pipe id, const char *name, nng_duration *valp) +nng_pipe_getopt_ms(nng_pipe p, const char *name, nng_duration *valp) { size_t sz = sizeof(*valp); - return (nng_pipe_getopt_x(id, name, valp, &sz, NNI_TYPE_DURATION)); + return (nng_pipe_getx(p, name, valp, &sz, NNI_TYPE_DURATION)); } int -nng_pipe_getopt_ptr(nng_pipe id, const char *name, void **valp) +nng_pipe_getopt_ptr(nng_pipe p, const char *name, void **valp) { size_t sz = sizeof(*valp); - return (nng_pipe_getopt_x(id, name, valp, &sz, NNI_TYPE_POINTER)); + return (nng_pipe_getx(p, name, valp, &sz, NNI_TYPE_POINTER)); } int -nng_pipe_getopt_sockaddr(nng_pipe id, const char *name, nng_sockaddr *sap) +nng_pipe_getopt_sockaddr(nng_pipe p, const char *name, nng_sockaddr *sap) { size_t sz = sizeof(*sap); - return (nng_pipe_getopt_x(id, name, sap, &sz, NNI_TYPE_SOCKADDR)); + return (nng_pipe_getx(p, name, sap, &sz, NNI_TYPE_SOCKADDR)); } int -nng_pipe_getopt_string(nng_pipe id, const char *name, char **valp) +nng_pipe_getopt_string(nng_pipe p, const char *name, char **valp) { size_t sz = sizeof(*valp); - return (nng_pipe_getopt_x(id, name, valp, &sz, NNI_TYPE_STRING)); + return (nng_pipe_getx(p, name, valp, &sz, NNI_TYPE_STRING)); } int -nng_pipe_close(nng_pipe id) +nng_pipe_close(nng_pipe pid) { int rv; nni_pipe *p; - if ((rv = nni_pipe_find(&p, id)) != 0) { + if ((rv = nni_pipe_find(&p, pid.id)) != 0) { return (rv); } nni_pipe_close(p); @@ -1347,13 +1356,15 @@ nng_msg_dup(nng_msg **dup, const nng_msg *src) nng_pipe nng_msg_get_pipe(const nng_msg *msg) { - return (nni_msg_get_pipe(msg)); + nng_pipe p; + p.id = nni_msg_get_pipe(msg); + return (p); } void nng_msg_set_pipe(nng_msg *msg, nng_pipe p) { - nni_msg_set_pipe(msg, p); + nni_msg_set_pipe(msg, p.id); } int @@ -59,11 +59,33 @@ extern "C" { #define NNG_MAXADDRLEN (128) // Types common to nng. -typedef uint32_t nng_socket; -typedef uint32_t nng_ctx; -typedef uint32_t nng_dialer; -typedef uint32_t nng_listener; -typedef uint32_t nng_pipe; + +// Identifiers are wrapped in a structure to improve compiler validation +// of incorrect passing. This gives us strong type checking. Modern +// compilers compile passing these by value to identical code as passing +// the integer type (at least with optimization applied). Please do not +// access the ID member directly. + +typedef struct nng_ctx_s { + uint32_t id; +} nng_ctx; + +typedef struct nng_dialer_s { + uint32_t id; +} nng_dialer; + +typedef struct nng_listener_s { + uint32_t id; +} nng_listener; + +typedef struct nng_pipe_s { + uint32_t id; +} nng_pipe; + +typedef struct nng_socket_s { + uint32_t id; +} nng_socket; + typedef int32_t nng_duration; // in milliseconds typedef struct nng_msg nng_msg; typedef struct nng_snapshot nng_snapshot; diff --git a/tests/bufsz.c b/tests/bufsz.c index 4686a4e5..b7128ed4 100644 --- a/tests/bufsz.c +++ b/tests/bufsz.c @@ -61,7 +61,7 @@ TestMain("Buffer Options", { // MUST NOT assume this. We only do so for testing. Convey("Legacy Recv Buf Option", { int cnt; - int os = (int) s1; + int os = (int) s1.id; size_t sz = sizeof(cnt); So(nng_setopt_int(s1, NNG_OPT_RECVBUF, 10) == 0); So(nn_getsockopt( @@ -82,7 +82,7 @@ TestMain("Buffer Options", { }); Convey("Legacy Send Buf Option", { int cnt; - int os = (int) s1; + int os = (int) s1.id; size_t sz = sizeof(cnt); So(nng_setopt_int(s1, NNG_OPT_SENDBUF, 10) == 0); So(nn_getsockopt( diff --git a/tests/message.c b/tests/message.c index 2dfa67fb..bf212b48 100644 --- a/tests/message.c +++ b/tests/message.c @@ -1,6 +1,6 @@ // -// Copyright 2017 Garrett D'Amore <garrett@damore.org> -// Copyright 2017 Capitar IT Group BV <info@capitar.com> +// Copyright 2018 Staysail Systems, Inc. <info@staysail.tech> +// Copyright 2018 Capitar IT Group BV <info@capitar.com> // // This software is supplied under the terms of the MIT License, a // copy of which should be located in the distribution where this @@ -113,9 +113,13 @@ TestMain("Message Tests", { }); Convey("Pipe retrievals work", { - So(nng_msg_get_pipe(msg) == 0); - nng_msg_set_pipe(msg, (nng_pipe) 45); - So(nng_msg_get_pipe(msg) == (nng_pipe) 45); + nng_pipe p; + p = nng_msg_get_pipe(msg); + So(p.id == 0); + p.id = 45; + nng_msg_set_pipe(msg, p); + p = nng_msg_get_pipe(msg); + So(p.id == 45); }); Convey("Message realloc works", { diff --git a/tests/multistress.c b/tests/multistress.c index 0a98d5fc..1ae6f323 100644 --- a/tests/multistress.c +++ b/tests/multistress.c @@ -150,7 +150,7 @@ req_client(void *arg) nng_msg * msg; char buf[32]; - (void) snprintf(buf, sizeof(buf), "%d-%d", req, num++); + (void) snprintf(buf, sizeof(buf), "%u-%d", req.id, num++); nng_msleep(rand() % 10); @@ -212,8 +212,8 @@ reqrep_test(int ntests) cli->name = "req"; getaddr(addr); - dprintf("DOING reqrep0 (req %d rep %d) address: %s\n", - cli->socket, srv->socket, addr); + dprintf("DOING reqrep0 (req %u rep %u) address: %s\n", + cli->socket.id, srv->socket.id, addr); if ((rv = nng_listen(srv->socket, addr, NULL, 0)) != 0) { fatal("nng_listen", rv); @@ -296,8 +296,8 @@ pair0_test(void) } getaddr(addr); - dprintf("DOING pair0 (%d, %d) address: %s\n", cli->socket, srv->socket, - addr); + dprintf("DOING pair0 (%u, %u) address: %s\n", cli->socket.id, + srv->socket.id, addr); if ((rv = nng_listen(srv->socket, addr, NULL, 0)) != 0) { fatal("nng_listen", rv); @@ -375,8 +375,8 @@ bus_test(void) } getaddr(addr); - dprintf("DOING bus0 (%d, %d) address: %s\n", cli->socket, srv->socket, - addr); + dprintf("DOING bus0 (%u, %u) address: %s\n", cli->socket.id, + srv->socket.id, addr); if ((rv = nng_listen(srv->socket, addr, NULL, 0)) != 0) { fatal("nng_listen", rv); @@ -468,8 +468,8 @@ pubsub_test(int ntests) cli->name = "sub"; getaddr(addr); - dprintf("DOING pubsub0 (pub %d sub %d) address: %s\n", - cli->socket, srv->socket, addr); + dprintf("DOING pubsub0 (pub %u sub %u) address: %s\n", + cli->socket.id, srv->socket.id, addr); if ((rv = nng_listen(srv->socket, addr, NULL, 0)) != 0) { fatal("nng_listen", rv); @@ -563,8 +563,8 @@ pipeline0_test(int ntests) cli->name = "pull"; getaddr(addr); - dprintf("DOING pipeline0 (pull %d push %d) address: %s\n", - cli->socket, srv->socket, addr); + dprintf("DOING pipeline0 (pull %u push %u) address: %s\n", + cli->socket.id, srv->socket.id, addr); if ((rv = nng_listen(srv->socket, addr, NULL, 0)) != 0) { fatal("nng_listen", rv); @@ -637,10 +637,10 @@ Main({ if (cases[i].thr != NULL) { nng_thread_destroy(cases[i].thr); dprintf( - "RESULT socket %d (%s) sent %d " + "RESULT socket %u (%s) sent %d " "recd " "%d fail %d\n", - cases[i].socket, cases[i].name, + cases[i].socket.id, cases[i].name, cases[i].nsend, cases[i].nrecv, cases[i].nfail); So(cases[i].nfail == 0); diff --git a/tests/pair1.c b/tests/pair1.c index ef3fe263..8a27bc6e 100644 --- a/tests/pair1.c +++ b/tests/pair1.c @@ -28,13 +28,14 @@ TestMain("PAIRv1 protocol", { const char * templ = "inproc://pairv1/%u"; char addr[NNG_MAXADDRLEN + 1]; - nng_socket s1 = 0; - nng_socket c1 = 0; - nng_socket c2 = 0; + nng_socket s1; + nng_socket c1; + nng_socket c2; nng_duration tmo; uint32_t v; size_t sz; + s1.id = c1.id = c2.id = 0; atexit(nng_fini); Convey("Given a few sockets", { @@ -210,7 +211,7 @@ TestMain("PAIRv1 protocol", { So(nng_recvmsg(s1, &msg, 0) == 0); CHECKSTR(msg, "ONE"); p1 = nng_msg_get_pipe(msg); - So(p1 != 0); + So(p1.id != 0); nng_msg_free(msg); So(nng_msg_alloc(&msg, 0) == 0); @@ -219,10 +220,10 @@ TestMain("PAIRv1 protocol", { So(nng_recvmsg(s1, &msg, 0) == 0); CHECKSTR(msg, "TWO"); p2 = nng_msg_get_pipe(msg); - So(p2 != 0); + So(p2.id != 0); nng_msg_free(msg); - So(p1 != p2); + So(p1.id != p2.id); So(nng_msg_alloc(&msg, 0) == 0); @@ -307,13 +308,15 @@ TestMain("PAIRv1 protocol", { nng_msleep(20); Convey("Send/recv work", { + nng_pipe p; So(nng_msg_alloc(&msg, 0) == 0); APPENDSTR(msg, "GAMMA"); So(nng_msg_header_append_u32(msg, 1) == 0); So(nng_msg_header_len(msg) == sizeof(uint32_t)); So(nng_sendmsg(c1, msg, 0) == 0); So(nng_recvmsg(s1, &msg, 0) == 0); - So(nng_msg_get_pipe(msg) != 0); + p = nng_msg_get_pipe(msg); + So(p.id != 0); CHECKSTR(msg, "GAMMA"); So(nng_msg_header_len(msg) == sizeof(uint32_t)); So(nng_msg_header_trim_u32(msg, &hops) == 0); @@ -328,7 +331,8 @@ TestMain("PAIRv1 protocol", { CHECKSTR(msg, "EPSILON"); So(nng_msg_header_len(msg) == sizeof(uint32_t)); So(nng_msg_header_trim_u32(msg, &hops) == 0); - So(nng_msg_get_pipe(msg) != 0); + p = nng_msg_get_pipe(msg); + So(p.id != 0); So(hops == 2); nng_msg_free(msg); }); @@ -470,7 +474,7 @@ TestMain("PAIRv1 protocol", { So(nng_recvmsg(s1, &msg, 0) == 0); CHECKSTR(msg, "ONE"); p1 = nng_msg_get_pipe(msg); - So(p1 != 0); + So(p1.id != 0); So(nng_msg_header_trim_u32(msg, &hops) == 0); So(hops == 1); nng_msg_free(msg); @@ -481,12 +485,12 @@ TestMain("PAIRv1 protocol", { So(nng_recvmsg(s1, &msg, 0) == 0); CHECKSTR(msg, "TWO"); p2 = nng_msg_get_pipe(msg); - So(p2 != 0); + So(p2.id != 0); So(nng_msg_header_trim_u32(msg, &hops) == 0); So(hops == 1); nng_msg_free(msg); - So(p1 != p2); + So(p1.id != p2.id); So(nng_msg_alloc(&msg, 0) == 0); nng_msg_set_pipe(msg, p1); @@ -514,7 +518,7 @@ TestMain("PAIRv1 protocol", { So(nng_recvmsg(s1, &msg, 0) == 0); CHECKSTR(msg, "ONE"); p1 = nng_msg_get_pipe(msg); - So(p1 != 0); + So(p1.id != 0); nng_msg_free(msg); nng_close(c1); diff --git a/tests/reconnect.c b/tests/reconnect.c index 6e7ab79f..4cd6cb3a 100644 --- a/tests/reconnect.c +++ b/tests/reconnect.c @@ -96,7 +96,7 @@ TestMain("Reconnect works", { CHECKSTR(msg, "again"); p2 = nng_msg_get_pipe(msg); nng_msg_free(msg); - So(p2 != p1); + So(p2.id != p1.id); }); }); }); diff --git a/tests/reqstress.c b/tests/reqstress.c index 04cf73ab..3f1e7396 100644 --- a/tests/reqstress.c +++ b/tests/reqstress.c @@ -146,7 +146,7 @@ req_client(void *arg) nng_msg * msg; char buf[32]; - (void) snprintf(buf, sizeof(buf), "%d-%d", req, num++); + (void) snprintf(buf, sizeof(buf), "%u-%d", req.id, num++); nng_msleep(rand() % 10); @@ -208,8 +208,8 @@ reqrep_test(int ntests) cli->name = "req"; getaddr(addr); - dprintf("DOING reqrep0 (req %d rep %d) address: %s\n", - cli->socket, srv->socket, addr); + dprintf("DOING reqrep0 (req %u rep %u) address: %s\n", + cli->socket.id, srv->socket.id, addr); if ((rv = nng_listen(srv->socket, addr, NULL, 0)) != 0) { fatal("nng_listen", rv); @@ -261,10 +261,10 @@ Main({ if (cases[i].thr != NULL) { nng_thread_destroy(cases[i].thr); dprintf( - "RESULT socket %d (%s) sent %d " + "RESULT socket %u (%s) sent %d " "recd " "%d fail %d\n", - cases[i].socket, cases[i].name, + cases[i].socket.id, cases[i].name, cases[i].nsend, cases[i].nrecv, cases[i].nfail); So(cases[i].nfail == 0); diff --git a/tests/sock.c b/tests/sock.c index 17ea055d..d6e36235 100644 --- a/tests/sock.c +++ b/tests/sock.c @@ -99,7 +99,7 @@ TestMain("Socket Operations", { s1, NNG_OPT_SOCKNAME, name, &sz) == 0); So(sz > 0 && sz < 64); So(sz == nni_strnlen(name, 64) + 1); - So(atoi(name) == (int) s1); + So(atoi(name) == (int) s1.id); So(nng_setopt( s1, NNG_OPT_SOCKNAME, "hello", 6) == 0); @@ -336,7 +336,7 @@ TestMain("Socket Operations", { nng_listener l; rv = nng_listen(s1, a, &l, 0); So(rv == 0); - So(l != 0); + So(l.id != 0); Convey("Second listen fails ADDRINUSE", { rv = nng_listen(s1, a, NULL, 0); @@ -369,10 +369,12 @@ TestMain("Socket Operations", { }); Convey("Cannot access as listener", { - bool b; + bool b; + nng_listener l; + l.id = ep.id; So(nng_listener_getopt_bool( - ep, NNG_OPT_RAW, &b) == NNG_ENOENT); - So(nng_listener_close(ep) == NNG_ENOENT); + l, NNG_OPT_RAW, &b) == NNG_ENOENT); + So(nng_listener_close(l) == NNG_ENOENT); }); Convey("Socket opts not for dialer", { @@ -395,8 +397,11 @@ TestMain("Socket Operations", { So(nng_dialer_setopt(ep, NNG_OPT_RECVMAXSZ, "a", 1) == NNG_EINVAL); }); - Convey("Cannot listen", - { So(nng_listener_start(ep, 0) == NNG_ENOTSUP); }); + Convey("Cannot listen", { + nng_listener l; + l.id = ep.id; + So(nng_listener_start(l, 0) == NNG_ENOTSUP); + }); }); @@ -413,10 +418,12 @@ TestMain("Socket Operations", { So(sz == 4321); }); Convey("Cannot access as dialer", { - bool b; + bool b; + nng_dialer d; + d.id = ep.id; So(nng_dialer_getopt_bool( - ep, NNG_OPT_RAW, &b) == NNG_ENOENT); - So(nng_dialer_close(ep) == NNG_ENOENT); + d, NNG_OPT_RAW, &b) == NNG_ENOENT); + So(nng_dialer_close(d) == NNG_ENOENT); }); Convey("Socket opts not for listener", { @@ -440,8 +447,11 @@ TestMain("Socket Operations", { So(nng_listener_setopt(ep, NNG_OPT_RECVMAXSZ, "a", 1) == NNG_EINVAL); }); - Convey("Cannot dial", - { So(nng_dialer_start(ep, 0) == NNG_ENOTSUP); }); + Convey("Cannot dial", { + nng_dialer d; + d.id = ep.id; + So(nng_dialer_start(d, 0) == NNG_ENOTSUP); + }); }); Convey("Cannot access absent ep options", { @@ -449,32 +459,36 @@ TestMain("Socket Operations", { int i; nng_duration t; bool b; + nng_dialer d; + nng_listener l; + d.id = 1999; + l.id = 1999; - So(nng_dialer_setopt_size( - 1999, NNG_OPT_RECVMAXSZ, 10) == NNG_ENOENT); + So(nng_dialer_setopt_size(d, NNG_OPT_RECVMAXSZ, 10) == + NNG_ENOENT); So(nng_listener_setopt_size( - 1999, NNG_OPT_RECVMAXSZ, 10) == NNG_ENOENT); + l, NNG_OPT_RECVMAXSZ, 10) == NNG_ENOENT); s = 1; - So(nng_dialer_getopt_bool(1999, NNG_OPT_RAW, &b) == + So(nng_dialer_getopt_bool(d, NNG_OPT_RAW, &b) == NNG_ENOENT); - So(nng_listener_getopt_bool(1999, NNG_OPT_RAW, &b) == + So(nng_listener_getopt_bool(l, NNG_OPT_RAW, &b) == NNG_ENOENT); - So(nng_dialer_getopt_size( - 1999, NNG_OPT_RECVMAXSZ, &s) == NNG_ENOENT); + So(nng_dialer_getopt_size(d, NNG_OPT_RECVMAXSZ, &s) == + NNG_ENOENT); So(nng_listener_getopt_size( - 1999, NNG_OPT_RECVMAXSZ, &s) == NNG_ENOENT); + l, NNG_OPT_RECVMAXSZ, &s) == NNG_ENOENT); - So(nng_dialer_getopt_int(1999, NNG_OPT_RAW, &i) == + So(nng_dialer_getopt_int(d, NNG_OPT_RAW, &i) == NNG_ENOENT); - So(nng_listener_getopt_int(1999, NNG_OPT_RAW, &i) == + So(nng_listener_getopt_int(l, NNG_OPT_RAW, &i) == NNG_ENOENT); - So(nng_dialer_getopt_ms(1999, NNG_OPT_RECVTIMEO, &t) == + So(nng_dialer_getopt_ms(d, NNG_OPT_RECVTIMEO, &t) == + NNG_ENOENT); + So(nng_listener_getopt_ms(l, NNG_OPT_SENDTIMEO, &t) == NNG_ENOENT); - So(nng_listener_getopt_ms( - 1999, NNG_OPT_SENDTIMEO, &t) == NNG_ENOENT); }); diff --git a/tests/surveyctx.c b/tests/surveyctx.c index 9ab2de40..f4d8e703 100644 --- a/tests/surveyctx.c +++ b/tests/surveyctx.c @@ -266,7 +266,7 @@ TestMain("Surveyor concurrent contexts", { nng_ctx_send(ctx, aio); nng_aio_wait(aio); So(nng_aio_result(aio) == 0); - nng_recv_aio(ctx, aio); + nng_ctx_recv(ctx, aio); nng_ctx_close(ctx); nng_aio_wait(aio); So(nng_aio_result(aio) == NNG_ECLOSED); diff --git a/tests/tcp.c b/tests/tcp.c index 2677222d..3d2ecfc8 100644 --- a/tests/tcp.c +++ b/tests/tcp.c @@ -30,7 +30,7 @@ check_props_v4(nng_msg *msg) bool b; p = nng_msg_get_pipe(msg); - So(p > 0); + So(p.id > 0); So(nng_pipe_getopt_sockaddr(p, NNG_OPT_LOCADDR, &la) == 0); So(la.s_family == NNG_AF_INET); So(la.s_in.sa_port == htons(trantest_port - 1)); diff --git a/tests/tcp6.c b/tests/tcp6.c index 07990a36..80135b33 100644 --- a/tests/tcp6.c +++ b/tests/tcp6.c @@ -49,7 +49,7 @@ check_props_v6(nng_msg *msg) nng_sockaddr la; z = sizeof(nng_sockaddr); p = nng_msg_get_pipe(msg); - So(p > 0); + So(p.id > 0); So(nng_pipe_getopt(p, NNG_OPT_LOCADDR, &la, &z) == 0); So(z == sizeof(la)); So(la.s_family == NNG_AF_INET6); @@ -62,7 +62,7 @@ check_props_v6(nng_msg *msg) nng_sockaddr ra; z = sizeof(nng_sockaddr); p = nng_msg_get_pipe(msg); - So(p > 0); + So(p.id > 0); So(nng_pipe_getopt(p, NNG_OPT_REMADDR, &ra, &z) == 0); So(z == sizeof(ra)); So(ra.s_family == NNG_AF_INET6); diff --git a/tests/tls.c b/tests/tls.c index 4ce12ea8..71e28deb 100644 --- a/tests/tls.c +++ b/tests/tls.c @@ -114,7 +114,7 @@ check_props_v4(nng_msg *msg) nng_sockaddr ra; p = nng_msg_get_pipe(msg); - So(p > 0); + So(p.id > 0); // Typed access So(nng_pipe_getopt_sockaddr(p, NNG_OPT_LOCADDR, &la) == 0); @@ -426,7 +426,7 @@ TestMain("TLS Transport", { So(nng_msg_len(msg) == 6); So(strcmp(nng_msg_body(msg), "hello") == 0); p = nng_msg_get_pipe(msg); - So(p > 0); + So(p.id > 0); So(nng_pipe_getopt_bool(p, NNG_OPT_TLS_VERIFIED, &b) == 0); So(b == false); nng_msg_free(msg); @@ -468,7 +468,7 @@ TestMain("TLS Transport", { So(nng_msg_len(msg) == 6); So(strcmp(nng_msg_body(msg), "hello") == 0); p = nng_msg_get_pipe(msg); - So(p > 0); + So(p.id > 0); So(nng_pipe_getopt_bool(p, NNG_OPT_TLS_VERIFIED, &b) == 0); So(b == true); int i; diff --git a/tests/trantest.h b/tests/trantest.h index cbed58f3..ed1eccb7 100644 --- a/tests/trantest.h +++ b/tests/trantest.h @@ -172,7 +172,7 @@ trantest_dial(trantest *tt, nng_dialer *dp) { nng_dialer d; int rv; - *dp = 0; + d.id = 0; rv = nng_dialer_create(&d, tt->reqsock, tt->addr); if (rv != 0) { @@ -197,7 +197,7 @@ trantest_listen(trantest *tt, nng_listener *lp) { int rv; nng_listener l; - *lp = 0; + l.id = 0; rv = nng_listener_create(&l, tt->repsock, tt->addr); if (rv != 0) { @@ -231,12 +231,13 @@ void trantest_conn_refused(trantest *tt) { Convey("Connection refused works", { - nng_dialer d = 0; + nng_dialer d; + d.id = 0; So(trantest_dial(tt, &d) == NNG_ECONNREFUSED); - So(d == 0); + So(d.id == 0); So(trantest_dial(tt, &d) == NNG_ECONNREFUSED); - So(d == 0); + So(d.id == 0); }); } @@ -248,10 +249,10 @@ trantest_duplicate_listen(trantest *tt) int rv; rv = trantest_listen(tt, &l); So(rv == 0); - So(l != 0); - l = 0; + So(l.id != 0); + l.id = 0; So(trantest_listen(tt, &l) == NNG_EADDRINUSE); - So(l == 0); + So(l.id == 0); }); } @@ -262,12 +263,12 @@ trantest_listen_accept(trantest *tt) nng_listener l; nng_dialer d; So(trantest_listen(tt, &l) == 0); - So(l != 0); + So(l.id != 0); nng_msleep(200); - d = 0; + d.id = 0; So(trantest_dial(tt, &d) == 0); - So(d != 0); + So(d.id != 0); }); } @@ -284,9 +285,9 @@ trantest_send_recv(trantest *tt) char * url; So(trantest_listen(tt, &l) == 0); - So(l != 0); + So(l.id != 0); So(trantest_dial(tt, &d) == 0); - So(d != 0); + So(d.id != 0); nng_msleep(200); // listener may be behind slightly @@ -312,7 +313,7 @@ trantest_send_recv(trantest *tt) So(nng_msg_len(recv) == strlen("acknowledge")); So(strcmp(nng_msg_body(recv), "acknowledge") == 0); p = nng_msg_get_pipe(recv); - So(p != 0); + So(p.id != 0); So(nng_pipe_getopt_string(p, NNG_OPT_URL, &url) == 0); So(strcmp(url, tt->addr) == 0); nng_strfree(url); @@ -334,9 +335,9 @@ trantest_send_recv_multi(trantest *tt) char msgbuf[16]; So(trantest_listen(tt, &l) == 0); - So(l != 0); + So(l.id != 0); So(trantest_dial(tt, &d) == 0); - So(d != 0); + So(d.id != 0); nng_msleep(200); // listener may be behind slightly @@ -366,7 +367,7 @@ trantest_send_recv_multi(trantest *tt) So(nng_msg_len(recv) == strlen(msgbuf) + 1); So(strcmp(nng_msg_body(recv), msgbuf) == 0); p = nng_msg_get_pipe(recv); - So(p != 0); + So(p.id != 0); So(nng_pipe_getopt_string(p, NNG_OPT_URL, &url) == 0); So(strcmp(url, tt->addr) == 0); nng_strfree(url); @@ -386,9 +387,9 @@ trantest_check_properties(trantest *tt, trantest_proptest_t f) int rv; So(trantest_listen(tt, &l) == 0); - So(l != 0); + So(l.id != 0); So(trantest_dial(tt, &d) == 0); - So(d != 0); + So(d.id != 0); nng_msleep(200); // listener may be behind slightly @@ -429,9 +430,9 @@ trantest_send_recv_large(trantest *tt) } So(trantest_listen(tt, &l) == 0); - So(l != 0); + So(l.id != 0); So(trantest_dial(tt, &d) == 0); - So(d != 0); + So(d.id != 0); nng_msleep(200); // listener may be behind slightly @@ -32,7 +32,7 @@ check_props_v4(nng_msg *msg) size_t len; p = nng_msg_get_pipe(msg); - So(p > 0); + So(p.id > 0); So(nng_pipe_getopt_sockaddr(p, NNG_OPT_LOCADDR, &la) == 0); So(la.s_family == NNG_AF_INET); diff --git a/tests/wss.c b/tests/wss.c index 89a26623..333af56c 100644 --- a/tests/wss.c +++ b/tests/wss.c @@ -141,7 +141,7 @@ check_props(nng_msg *msg) size_t len; p = nng_msg_get_pipe(msg); - So(p > 0); + So(p.id > 0); z = sizeof(nng_sockaddr); So(nng_pipe_getopt(p, NNG_OPT_LOCADDR, &la, &z) == 0); diff --git a/tests/wssfile.c b/tests/wssfile.c index 41fb8f9f..6b1d1a7b 100644 --- a/tests/wssfile.c +++ b/tests/wssfile.c @@ -142,7 +142,7 @@ check_props(nng_msg *msg) size_t len; p = nng_msg_get_pipe(msg); - So(p > 0); + So(p.id > 0); // Typed z = sizeof(nng_sockaddr); @@ -349,7 +349,7 @@ TestMain("WebSocket Secure (TLS) Transport (file based)", { So(nng_msg_len(msg) == 6); So(strcmp(nng_msg_body(msg), "hello") == 0); p = nng_msg_get_pipe(msg); - So(p > 0); + So(p.id > 0); So(nng_pipe_getopt_bool(p, NNG_OPT_TLS_VERIFIED, &b) == 0); So(b == false); nng_msg_free(msg); @@ -391,7 +391,7 @@ TestMain("WebSocket Secure (TLS) Transport (file based)", { So(nng_msg_len(msg) == 6); So(strcmp(nng_msg_body(msg), "hello") == 0); p = nng_msg_get_pipe(msg); - So(p > 0); + So(p.id > 0); So(nng_pipe_getopt_bool(p, NNG_OPT_TLS_VERIFIED, &b) == 0); So(b == true); nng_msg_free(msg); @@ -44,7 +44,7 @@ check_props(nng_msg *msg) { nng_pipe p; p = nng_msg_get_pipe(msg); - So(p > 0); + So(p.id > 0); // Check local address. Convey("Local address property works", { |
