diff options
| author | Garrett D'Amore <garrett@damore.org> | 2018-02-14 14:50:04 -0800 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2018-02-14 18:28:36 -0800 |
| commit | 45bc175ef9278c175d2fc3a0678b49b18e74c449 (patch) | |
| tree | b1838778ee898112f28b35178364068c6f48c9b4 /src/nng_compat.c | |
| parent | 8f93750ed2a6aaa1749eb689ddf119280f9aac7a (diff) | |
| download | nng-45bc175ef9278c175d2fc3a0678b49b18e74c449.tar.gz nng-45bc175ef9278c175d2fc3a0678b49b18e74c449.tar.bz2 nng-45bc175ef9278c175d2fc3a0678b49b18e74c449.zip | |
fixes #234 Investigate enabling more verbose compiler warnings
We enabled verbose compiler warnings, and found a lot of issues.
Some of these were even real bugs. As a bonus, we actually save
some initialization steps in the compat layer, and avoid passing
some variables we don't need.
Diffstat (limited to 'src/nng_compat.c')
| -rw-r--r-- | src/nng_compat.c | 134 |
1 files changed, 22 insertions, 112 deletions
diff --git a/src/nng_compat.c b/src/nng_compat.c index 482834a1..35bacb6f 100644 --- a/src/nng_compat.c +++ b/src/nng_compat.c @@ -27,7 +27,7 @@ // This file supplies the legacy compatibility API. Applications should // avoid using these if at all possible, and instead use the new style APIs. -static struct { +static const struct { int nerr; int perr; } nn_errnos[] = { @@ -216,6 +216,7 @@ int nn_shutdown(int s, int ep) { int rv; + (void) s; // Unused // Socket is wired into the endpoint... so passing a bad endpoint // ID can result in affecting the wrong socket. But this requires @@ -596,127 +597,38 @@ nn_sendmsg(int s, const struct nn_msghdr *mh, int flags) } // options which we convert -- most of the array is initialized at run time. -static struct { +static const struct { int nnlevel; int nnopt; const char *opt; } options[] = { - // clang-format off - { NN_SOL_SOCKET, NN_LINGER }, // review - { NN_SOL_SOCKET, NN_SNDBUF }, - { NN_SOL_SOCKET, NN_RCVBUF } , - { NN_SOL_SOCKET, NN_RECONNECT_IVL }, - { NN_SOL_SOCKET, NN_RECONNECT_IVL_MAX }, - { NN_SOL_SOCKET, NN_SNDFD }, - { NN_SOL_SOCKET, NN_RCVFD }, - { NN_SOL_SOCKET, NN_RCVMAXSIZE }, - { NN_SOL_SOCKET, NN_MAXTTL }, - { NN_SOL_SOCKET, NN_RCVTIMEO }, - { NN_SOL_SOCKET, NN_SNDTIMEO }, - { NN_SOL_SOCKET, NN_DOMAIN }, - { NN_SOL_SOCKET, NN_SOCKET_NAME }, - { NN_REQ, NN_REQ_RESEND_IVL }, - { NN_SUB, NN_SUB_SUBSCRIBE }, - { NN_SUB, NN_SUB_UNSUBSCRIBE }, - { NN_SURVEYOR, NN_SURVEYOR_DEADLINE }, + { NN_SOL_SOCKET, NN_LINGER, NNG_OPT_LINGER }, // review + { NN_SOL_SOCKET, NN_SNDBUF, NNG_OPT_SENDBUF }, + { NN_SOL_SOCKET, NN_RCVBUF, NNG_OPT_RECVBUF }, + { NN_SOL_SOCKET, NN_RECONNECT_IVL, NNG_OPT_RECONNMINT }, + { NN_SOL_SOCKET, NN_RECONNECT_IVL_MAX, NNG_OPT_RECONNMAXT }, + { NN_SOL_SOCKET, NN_SNDFD, NNG_OPT_SENDFD }, + { NN_SOL_SOCKET, NN_RCVFD, NNG_OPT_RECVFD }, + { NN_SOL_SOCKET, NN_RCVMAXSIZE, NNG_OPT_RECVMAXSZ }, + { NN_SOL_SOCKET, NN_MAXTTL, NNG_OPT_MAXTTL }, + { NN_SOL_SOCKET, NN_RCVTIMEO, NNG_OPT_RECVTIMEO }, + { NN_SOL_SOCKET, NN_SNDTIMEO, NNG_OPT_SENDTIMEO }, + { NN_SOL_SOCKET, NN_DOMAIN, NNG_OPT_DOMAIN }, + { NN_SOL_SOCKET, NN_SOCKET_NAME, NNG_OPT_SOCKNAME }, + { NN_REQ, NN_REQ_RESEND_IVL, NNG_OPT_REQ_RESENDTIME }, + { NN_SUB, NN_SUB_SUBSCRIBE, NNG_OPT_SUB_SUBSCRIBE }, + { NN_SUB, NN_SUB_UNSUBSCRIBE, NNG_OPT_SUB_UNSUBSCRIBE }, + { NN_SURVEYOR, NN_SURVEYOR_DEADLINE, NNG_OPT_SURVEYOR_SURVEYTIME }, // XXX: IPV4ONLY, SNDPRIO, RCVPRIO - // clang-format on }; -static void -init_opts(void) -{ - static int optsinited = 0; - if (optsinited) { - return; - } - for (int i = 0; i < sizeof(options) / sizeof(options[0]); i++) { - if (options[i].opt > 0) { - continue; - } -#define SETOPT(n) options[i].opt = n; - - switch (options[i].nnlevel) { - case NN_SOL_SOCKET: - switch (options[i].nnopt) { - case NN_LINGER: - SETOPT(NNG_OPT_LINGER); - break; - case NN_SNDBUF: - SETOPT(NNG_OPT_SENDBUF); - break; - case NN_RCVBUF: - SETOPT(NNG_OPT_RECVBUF); - break; - case NN_RECONNECT_IVL: - SETOPT(NNG_OPT_RECONNMINT); - break; - case NN_RECONNECT_IVL_MAX: - SETOPT(NNG_OPT_RECONNMAXT); - break; - case NN_SNDFD: - SETOPT(NNG_OPT_SENDFD); - break; - case NN_RCVFD: - SETOPT(NNG_OPT_RECVFD); - break; - case NN_RCVMAXSIZE: - SETOPT(NNG_OPT_RECVMAXSZ); - break; - case NN_MAXTTL: - SETOPT(NNG_OPT_MAXTTL); - break; - case NN_RCVTIMEO: - SETOPT(NNG_OPT_RECVTIMEO); - break; - case NN_SNDTIMEO: - SETOPT(NNG_OPT_SENDTIMEO); - break; - case NN_SOCKET_NAME: - SETOPT(NNG_OPT_SOCKNAME); - break; - case NN_DOMAIN: - SETOPT(NNG_OPT_DOMAIN); - break; - } - break; - case NN_REQ: - switch (options[i].nnopt) { - case NN_REQ_RESEND_IVL: - SETOPT(NNG_OPT_REQ_RESENDTIME); - break; - } - break; - case NN_SUB: - switch (options[i].nnopt) { - case NN_SUB_SUBSCRIBE: - SETOPT(NNG_OPT_SUB_SUBSCRIBE); - break; - case NN_SUB_UNSUBSCRIBE: - SETOPT(NNG_OPT_SUB_UNSUBSCRIBE); - break; - } - case NN_SURVEYOR: - switch (options[i].nnopt) { - case NN_SURVEYOR_DEADLINE: - SETOPT(NNG_OPT_SURVEYOR_SURVEYTIME); - break; - } - break; - } - } - optsinited = 1; -} - int nn_getsockopt(int s, int nnlevel, int nnopt, void *valp, size_t *szp) { const char *name = NULL; int rv; - init_opts(); - - for (int i = 0; i < sizeof(options) / sizeof(options[0]); i++) { + for (unsigned i = 0; i < sizeof(options) / sizeof(options[0]); i++) { if ((options[i].nnlevel == nnlevel) && (options[i].nnopt == nnopt)) { name = options[i].opt; @@ -743,9 +655,7 @@ nn_setsockopt(int s, int nnlevel, int nnopt, const void *valp, size_t sz) const char *name = NULL; int rv; - init_opts(); - - for (int i = 0; i < sizeof(options) / sizeof(options[0]); i++) { + for (unsigned i = 0; i < sizeof(options) / sizeof(options[0]); i++) { if ((options[i].nnlevel == nnlevel) && (options[i].nnopt == nnopt)) { name = options[i].opt; |
