diff options
| author | Garrett D'Amore <garrett@damore.org> | 2018-03-18 12:46:31 -0700 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2018-03-18 12:46:31 -0700 |
| commit | 8b979454d891b84da727a329906c4293fadc5f3c (patch) | |
| tree | cb491c476080de11c7fc5b5868579f4ef86f4df4 /src/nng.c | |
| parent | 3a2af394a7d94ac5f924aaea6cbad825a9b05d75 (diff) | |
| download | nng-8b979454d891b84da727a329906c4293fadc5f3c.tar.gz nng-8b979454d891b84da727a329906c4293fadc5f3c.tar.bz2 nng-8b979454d891b84da727a329906c4293fadc5f3c.zip | |
fixes #295 boolean options should use C99 bool type
fixes #275 nng_pipe_getopt_ptr() missing?
fixes #285 nng_setopt_ptr MIS
fixes #297 nng_listener/dialer_close does not validate mode
This change adds some missing APIs, and changes others.
In particular, certain options are now of type bool, with size
of just one. This is a *breaking* change for code that uses those
options -- NNG_OPT_RAW, NNG_OPT_PAIR1_POLY, NNG_OPT_TLS_VERIFIED.
Diffstat (limited to 'src/nng.c')
| -rw-r--r-- | src/nng.c | 64 |
1 files changed, 61 insertions, 3 deletions
@@ -380,6 +380,12 @@ nng_dialer_setopt(nng_dialer id, const char *name, const void *v, size_t sz) } int +nng_dialer_setopt_bool(nng_dialer id, const char *name, bool val) +{ + return (nng_dialer_setopt(id, name, &val, sizeof(val))); +} + +int nng_dialer_setopt_int(nng_dialer id, const char *name, int val) { return (nng_dialer_setopt(id, name, &val, sizeof(val))); @@ -422,6 +428,13 @@ nng_dialer_getopt(nng_dialer id, const char *name, void *val, size_t *szp) } int +nng_dialer_getopt_bool(nng_dialer id, const char *name, bool *valp) +{ + size_t sz = sizeof(*valp); + return (nng_dialer_getopt(id, name, valp, &sz)); +} + +int nng_dialer_getopt_int(nng_dialer id, const char *name, int *valp) { size_t sz = sizeof(*valp); @@ -464,6 +477,12 @@ nng_listener_setopt( } int +nng_listener_setopt_bool(nng_listener id, const char *name, bool val) +{ + return (nng_listener_setopt(id, name, &val, sizeof(val))); +} + +int nng_listener_setopt_int(nng_listener id, const char *name, int val) { return (nng_listener_setopt(id, name, &val, sizeof(val))); @@ -506,6 +525,13 @@ nng_listener_getopt(nng_listener id, const char *name, void *val, size_t *szp) } int +nng_listener_getopt_bool(nng_listener id, const char *name, bool *valp) +{ + size_t sz = sizeof(*valp); + return (nng_listener_getopt(id, name, valp, &sz)); +} + +int nng_listener_getopt_int(nng_listener id, const char *name, int *valp) { size_t sz = sizeof(*valp); @@ -541,7 +567,7 @@ nng_listener_getopt_ms(nng_listener id, const char *name, nng_duration *valp) } static int -nng_ep_close(uint32_t id) +nng_ep_close(uint32_t id, int mode) { nni_ep *ep; int rv; @@ -549,6 +575,11 @@ nng_ep_close(uint32_t id) if ((rv = nni_ep_find(&ep, id)) != 0) { return (rv); } + if (nni_ep_mode(ep) != mode) { + nni_ep_rele(ep); + return (NNG_ENOENT); + } + nni_ep_close(ep); return (0); } @@ -556,13 +587,13 @@ nng_ep_close(uint32_t id) int nng_dialer_close(nng_dialer d) { - return (nng_ep_close((uint32_t) d)); + return (nng_ep_close((uint32_t) d, NNI_EP_MODE_DIAL)); } int nng_listener_close(nng_listener l) { - return (nng_ep_close((uint32_t) l)); + return (nng_ep_close((uint32_t) l, NNI_EP_MODE_LISTEN)); } int @@ -607,6 +638,12 @@ nng_setopt_int(nng_socket sid, const char *name, int val) } int +nng_setopt_bool(nng_socket sid, const char *name, bool val) +{ + return (nng_setopt(sid, name, &val, sizeof(val))); +} + +int nng_setopt_size(nng_socket sid, const char *name, size_t val) { return (nng_setopt(sid, name, &val, sizeof(val))); @@ -637,6 +674,13 @@ nng_setopt_string(nng_socket sid, const char *name, const char *val) } int +nng_getopt_bool(nng_socket sid, const char *name, bool *valp) +{ + size_t sz = sizeof(*valp); + return (nng_getopt(sid, name, valp, &sz)); +} + +int nng_getopt_int(nng_socket sid, const char *name, int *valp) { size_t sz = sizeof(*valp); @@ -785,6 +829,13 @@ nng_pipe_getopt(nng_pipe id, const char *name, void *val, size_t *sizep) } int +nng_pipe_getopt_bool(nng_pipe id, const char *name, bool *valp) +{ + size_t sz = sizeof(*valp); + return (nng_pipe_getopt(id, name, valp, &sz)); +} + +int nng_pipe_getopt_int(nng_pipe id, const char *name, int *valp) { size_t sz = sizeof(*valp); @@ -813,6 +864,13 @@ nng_pipe_getopt_ms(nng_pipe id, const char *name, nng_duration *valp) } int +nng_pipe_getopt_ptr(nng_pipe id, const char *name, void **valp) +{ + size_t sz = sizeof(*valp); + return (nng_pipe_getopt(id, name, valp, &sz)); +} + +int nng_pipe_close(nng_pipe id) { int rv; |
