aboutsummaryrefslogtreecommitdiff
path: root/src/transport/tls
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2018-12-28 21:07:58 -0800
committerGarrett D'Amore <garrett@damore.org>2018-12-29 14:22:06 -0800
commitd3bd35ab49ad74528fd9e34cce9016d74dd91943 (patch)
tree596459970f49a340f5e292f7bdb4060f4ea2be81 /src/transport/tls
parent02e90dd4f29037e43f28e3bd1e912d4092011d23 (diff)
downloadnng-d3bd35ab49ad74528fd9e34cce9016d74dd91943.tar.gz
nng-d3bd35ab49ad74528fd9e34cce9016d74dd91943.tar.bz2
nng-d3bd35ab49ad74528fd9e34cce9016d74dd91943.zip
fixes #831 Unify option structures, o_type is unused
Diffstat (limited to 'src/transport/tls')
-rw-r--r--src/transport/tls/tls.c113
1 files changed, 24 insertions, 89 deletions
diff --git a/src/transport/tls/tls.c b/src/transport/tls/tls.c
index 867be9b8..35356054 100644
--- a/src/transport/tls/tls.c
+++ b/src/transport/tls/tls.c
@@ -15,8 +15,8 @@
#include "core/nng_impl.h"
#include "nng/supplemental/tls/tls.h"
-#include "supplemental/tls/tls_api.h"
#include "nng/transport/tls/tls.h"
+#include "supplemental/tls/tls_api.h"
// TLS over TCP transport. Platform specific TCP operations must be
// supplied as well, and uses the supplemental TLS v1.2 code. It is not
@@ -1000,7 +1000,7 @@ tlstran_ep_set_nodelay(void *arg, const void *v, size_t sz, nni_opt_type t)
tlstran_ep *ep = arg;
bool val;
int rv;
- if ((rv = nni_copyin_bool(&val, v, sz, t)) == 0) {
+ if (((rv = nni_copyin_bool(&val, v, sz, t)) == 0) && (ep != NULL)) {
nni_mtx_lock(&ep->mtx);
ep->nodelay = val;
nni_mtx_unlock(&ep->mtx);
@@ -1025,7 +1025,8 @@ tlstran_ep_set_recvmaxsz(void *arg, const void *v, size_t sz, nni_opt_type t)
tlstran_ep *ep = arg;
size_t val;
int rv;
- if ((rv = nni_copyin_size(&val, v, sz, 0, NNI_MAXSZ, t)) == 0) {
+ if (((rv = nni_copyin_size(&val, v, sz, 0, NNI_MAXSZ, t)) == 0) &&
+ (ep != NULL)) {
nni_mtx_lock(&ep->mtx);
ep->rcvmax = val;
nni_mtx_unlock(&ep->mtx);
@@ -1039,7 +1040,7 @@ tlstran_ep_set_keepalive(void *arg, const void *v, size_t sz, nni_opt_type t)
tlstran_ep *ep = arg;
bool val;
int rv;
- if ((rv = nni_copyin_bool(&val, v, sz, t)) == 0) {
+ if (((rv = nni_copyin_bool(&val, v, sz, t)) == 0) && (ep != NULL)) {
nni_mtx_lock(&ep->mtx);
ep->keepalive = val;
nni_mtx_unlock(&ep->mtx);
@@ -1070,12 +1071,6 @@ tlstran_ep_get_recvmaxsz(void *arg, void *v, size_t *szp, nni_opt_type t)
}
static int
-tlstran_check_bool(const void *v, size_t sz, nni_opt_type t)
-{
- return (nni_copyin_bool(NULL, v, sz, t));
-}
-
-static int
tlstran_ep_get_url(void *arg, void *v, size_t *szp, nni_opt_type t)
{
tlstran_ep *ep = arg;
@@ -1106,27 +1101,10 @@ tlstran_ep_get_locaddr(void *arg, void *buf, size_t *szp, nni_opt_type t)
}
static int
-tlstran_check_recvmaxsz(const void *v, size_t sz, nni_opt_type t)
-{
- return (nni_copyin_size(NULL, v, sz, 0, NNI_MAXSZ, t));
-}
-
-static int
-tlstran_check_config(const void *data, size_t sz, nni_opt_type t)
-{
- void *v;
- int rv;
- if (((rv = nni_copyin_ptr(&v, data, sz, t)) == 0) && (v == NULL)) {
- rv = NNG_EINVAL;
- }
- return (rv);
-}
-
-static int
tlstran_ep_set_config(void *arg, const void *data, size_t sz, nni_opt_type t)
{
tlstran_ep * ep = arg;
- nng_tls_config *cfg, *old;
+ nng_tls_config *cfg;
int rv;
if ((rv = nni_copyin_ptr((void **) &cfg, data, sz, t)) != 0) {
@@ -1135,13 +1113,17 @@ tlstran_ep_set_config(void *arg, const void *data, size_t sz, nni_opt_type t)
if (cfg == NULL) {
return (NNG_EINVAL);
}
- nni_mtx_lock(&ep->mtx);
- old = ep->cfg;
- nni_tls_config_hold(cfg);
- ep->cfg = cfg;
- nni_mtx_unlock(&ep->mtx);
- if (old != NULL) {
- nni_tls_config_fini(old);
+ if (ep != NULL) {
+ nng_tls_config *old;
+
+ nni_mtx_lock(&ep->mtx);
+ old = ep->cfg;
+ nni_tls_config_hold(cfg);
+ ep->cfg = cfg;
+ nni_mtx_unlock(&ep->mtx);
+ if (old != NULL) {
+ nni_tls_config_fini(old);
+ }
}
return (0);
}
@@ -1179,7 +1161,7 @@ tlstran_ep_set_ca_file(void *arg, const void *v, size_t sz, nni_opt_type t)
tlstran_ep *ep = arg;
int rv;
- if ((rv = tlstran_check_string(v, sz, t)) == 0) {
+ if (((rv = tlstran_check_string(v, sz, t)) == 0) && (ep != NULL)) {
nni_mtx_lock(&ep->mtx);
rv = nng_tls_config_ca_file(ep->cfg, v);
nni_mtx_unlock(&ep->mtx);
@@ -1188,13 +1170,6 @@ tlstran_ep_set_ca_file(void *arg, const void *v, size_t sz, nni_opt_type t)
}
static int
-tlstran_check_auth_mode(const void *v, size_t sz, nni_opt_type t)
-{
- return (nni_copyin_int(NULL, v, sz, NNG_TLS_AUTH_MODE_NONE,
- NNG_TLS_AUTH_MODE_REQUIRED, t));
-}
-
-static int
tlstran_ep_set_auth_mode(void *arg, const void *v, size_t sz, nni_opt_type t)
{
tlstran_ep *ep = arg;
@@ -1203,7 +1178,7 @@ tlstran_ep_set_auth_mode(void *arg, const void *v, size_t sz, nni_opt_type t)
rv = nni_copyin_int(&mode, v, sz, NNG_TLS_AUTH_MODE_NONE,
NNG_TLS_AUTH_MODE_REQUIRED, t);
- if (rv == 0) {
+ if ((rv == 0) && (ep != NULL)) {
nni_mtx_lock(&ep->mtx);
rv = nng_tls_config_auth_mode(ep->cfg, mode);
nni_mtx_unlock(&ep->mtx);
@@ -1217,7 +1192,7 @@ tlstran_ep_set_server_name(void *arg, const void *v, size_t sz, nni_opt_type t)
tlstran_ep *ep = arg;
int rv;
- if ((rv = tlstran_check_string(v, sz, t)) == 0) {
+ if (((rv = tlstran_check_string(v, sz, t)) == 0) && (ep != NULL)) {
nni_mtx_lock(&ep->mtx);
rv = nng_tls_config_server_name(ep->cfg, v);
nni_mtx_unlock(&ep->mtx);
@@ -1232,7 +1207,7 @@ tlstran_ep_set_cert_key_file(
tlstran_ep *ep = arg;
int rv;
- if ((rv = tlstran_check_string(v, sz, t)) == 0) {
+ if (((rv = tlstran_check_string(v, sz, t)) == 0) && (ep != NULL)) {
nni_mtx_lock(&ep->mtx);
rv = nng_tls_config_cert_key_file(ep->cfg, v, NULL);
nni_mtx_unlock(&ep->mtx);
@@ -1248,30 +1223,25 @@ tlstran_pipe_get_verified(void *arg, void *v, size_t *szp, nni_opt_type t)
return (nni_copyout_bool(nni_tls_verified(p->tls), v, szp, t));
}
-static nni_tran_option tlstran_pipe_options[] = {
+static nni_option tlstran_pipe_options[] = {
{
.o_name = NNG_OPT_LOCADDR,
- .o_type = NNI_TYPE_SOCKADDR,
.o_get = tlstran_pipe_get_locaddr,
},
{
.o_name = NNG_OPT_REMADDR,
- .o_type = NNI_TYPE_SOCKADDR,
.o_get = tlstran_pipe_get_remaddr,
},
{
.o_name = NNG_OPT_TLS_VERIFIED,
- .o_type = NNI_TYPE_BOOL,
.o_get = tlstran_pipe_get_verified,
},
{
.o_name = NNG_OPT_TCP_KEEPALIVE,
- .o_type = NNI_TYPE_BOOL,
.o_get = tlstran_pipe_get_keepalive,
},
{
.o_name = NNG_OPT_TCP_NODELAY,
- .o_type = NNI_TYPE_BOOL,
.o_get = tlstran_pipe_get_nodelay,
},
// terminate list
@@ -1291,63 +1261,46 @@ static nni_tran_pipe_ops tlstran_pipe_ops = {
.p_options = tlstran_pipe_options,
};
-static nni_tran_option tlstran_dialer_options[] = {
+static nni_option tlstran_dialer_options[] = {
{
.o_name = NNG_OPT_RECVMAXSZ,
- .o_type = NNI_TYPE_SIZE,
.o_get = tlstran_ep_get_recvmaxsz,
.o_set = tlstran_ep_set_recvmaxsz,
- .o_chk = tlstran_check_recvmaxsz,
},
{
.o_name = NNG_OPT_URL,
- .o_type = NNI_TYPE_STRING,
.o_get = tlstran_ep_get_url,
},
{
.o_name = NNG_OPT_TLS_CONFIG,
- .o_type = NNI_TYPE_POINTER,
.o_get = tlstran_ep_get_config,
.o_set = tlstran_ep_set_config,
- .o_chk = tlstran_check_config,
},
{
.o_name = NNG_OPT_TLS_CERT_KEY_FILE,
- .o_type = NNI_TYPE_STRING,
.o_set = tlstran_ep_set_cert_key_file,
- .o_chk = tlstran_check_string,
},
{
.o_name = NNG_OPT_TLS_CA_FILE,
- .o_type = NNI_TYPE_STRING,
.o_set = tlstran_ep_set_ca_file,
- .o_chk = tlstran_check_string,
},
{
.o_name = NNG_OPT_TLS_AUTH_MODE,
- .o_type = NNI_TYPE_INT32, // enum really
.o_set = tlstran_ep_set_auth_mode,
- .o_chk = tlstran_check_auth_mode,
},
{
.o_name = NNG_OPT_TLS_SERVER_NAME,
- .o_type = NNI_TYPE_STRING,
.o_set = tlstran_ep_set_server_name,
- .o_chk = tlstran_check_string,
},
{
.o_name = NNG_OPT_TCP_NODELAY,
- .o_type = NNI_TYPE_BOOL,
.o_get = tlstran_ep_get_nodelay,
.o_set = tlstran_ep_set_nodelay,
- .o_chk = tlstran_check_bool,
},
{
.o_name = NNG_OPT_TCP_KEEPALIVE,
- .o_type = NNI_TYPE_BOOL,
.o_get = tlstran_ep_get_keepalive,
.o_set = tlstran_ep_set_keepalive,
- .o_chk = tlstran_check_bool,
},
// terminate list
{
@@ -1355,68 +1308,50 @@ static nni_tran_option tlstran_dialer_options[] = {
},
};
-static nni_tran_option tlstran_listener_options[] = {
+static nni_option tlstran_listener_options[] = {
{
.o_name = NNG_OPT_RECVMAXSZ,
- .o_type = NNI_TYPE_SIZE,
.o_get = tlstran_ep_get_recvmaxsz,
.o_set = tlstran_ep_set_recvmaxsz,
- .o_chk = tlstran_check_recvmaxsz,
},
{
.o_name = NNG_OPT_URL,
- .o_type = NNI_TYPE_STRING,
.o_get = tlstran_ep_get_url,
},
{
.o_name = NNG_OPT_LOCADDR,
- .o_type = NNI_TYPE_SOCKADDR,
.o_get = tlstran_ep_get_locaddr,
},
{
.o_name = NNG_OPT_TLS_CONFIG,
- .o_type = NNI_TYPE_POINTER,
.o_get = tlstran_ep_get_config,
.o_set = tlstran_ep_set_config,
- .o_chk = tlstran_check_config,
},
{
.o_name = NNG_OPT_TLS_CERT_KEY_FILE,
- .o_type = NNI_TYPE_STRING,
.o_set = tlstran_ep_set_cert_key_file,
- .o_chk = tlstran_check_string,
},
{
.o_name = NNG_OPT_TLS_CA_FILE,
- .o_type = NNI_TYPE_STRING,
.o_set = tlstran_ep_set_ca_file,
- .o_chk = tlstran_check_string,
},
{
.o_name = NNG_OPT_TLS_AUTH_MODE,
- .o_type = NNI_TYPE_INT32, // enum really
.o_set = tlstran_ep_set_auth_mode,
- .o_chk = tlstran_check_auth_mode,
},
{
.o_name = NNG_OPT_TLS_SERVER_NAME,
- .o_type = NNI_TYPE_STRING,
.o_set = tlstran_ep_set_server_name,
- .o_chk = tlstran_check_string,
},
{
.o_name = NNG_OPT_TCP_NODELAY,
- .o_type = NNI_TYPE_BOOL,
.o_get = tlstran_ep_get_nodelay,
.o_set = tlstran_ep_set_nodelay,
- .o_chk = tlstran_check_bool,
},
{
.o_name = NNG_OPT_TCP_KEEPALIVE,
- .o_type = NNI_TYPE_BOOL,
.o_get = tlstran_ep_get_keepalive,
.o_set = tlstran_ep_set_keepalive,
- .o_chk = tlstran_check_bool,
},
// terminate list
{