aboutsummaryrefslogtreecommitdiff
path: root/src/transport
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2018-11-05 17:21:34 -0800
committerGarrett D'Amore <garrett@damore.org>2018-11-05 18:09:35 -0800
commit3cc0bb37e3543052f336abe1d3349ff095f72ae2 (patch)
tree048163a5c66029c4837be4ac93a56f0790df8dc4 /src/transport
parent77984b14a65c0a7387c97f3d36f947dd17358744 (diff)
downloadnng-3cc0bb37e3543052f336abe1d3349ff095f72ae2.tar.gz
nng-3cc0bb37e3543052f336abe1d3349ff095f72ae2.tar.bz2
nng-3cc0bb37e3543052f336abe1d3349ff095f72ae2.zip
fixes #456 TLS configuration object hold
fixes #776 Configuration of mbedTLS should warn about license
Diffstat (limited to 'src/transport')
-rw-r--r--src/transport/tls/tls.c10
-rw-r--r--src/transport/ws/websocket.c28
2 files changed, 28 insertions, 10 deletions
diff --git a/src/transport/tls/tls.c b/src/transport/tls/tls.c
index 8fd59fd7..a8f196f7 100644
--- a/src/transport/tls/tls.c
+++ b/src/transport/tls/tls.c
@@ -1149,10 +1149,14 @@ tlstran_ep_set_config(void *arg, const void *data, size_t sz, nni_opt_type t)
static int
tlstran_ep_get_config(void *arg, void *v, size_t *szp, nni_opt_type t)
{
- tlstran_ep *ep = arg;
- int rv;
+ tlstran_ep * ep = arg;
+ nng_tls_config *cfg;
+ int rv;
nni_mtx_lock(&ep->mtx);
- rv = nni_copyout_ptr(ep->cfg, v, szp, t);
+ if ((cfg = ep->cfg) != NULL) {
+ nni_tls_config_hold(cfg);
+ }
+ rv = nni_copyout_ptr(cfg, v, szp, t);
nni_mtx_unlock(&ep->mtx);
return (rv);
}
diff --git a/src/transport/ws/websocket.c b/src/transport/ws/websocket.c
index baa9ea34..73dd8234 100644
--- a/src/transport/ws/websocket.c
+++ b/src/transport/ws/websocket.c
@@ -1060,7 +1060,9 @@ wss_dialer_set_cert_key_file(
((rv = nni_ws_dialer_get_tls(d->dialer, &tls)) != 0)) {
return (rv);
}
- return (nng_tls_config_cert_key_file(tls, v, NULL));
+ rv = nng_tls_config_cert_key_file(tls, v, NULL);
+ nni_tls_config_fini(tls);
+ return (rv);
}
static int
@@ -1075,7 +1077,9 @@ wss_listener_set_cert_key_file(
((rv = nni_ws_listener_get_tls(l->listener, &tls)) != 0)) {
return (rv);
}
- return (nng_tls_config_cert_key_file(tls, v, NULL));
+ rv = nng_tls_config_cert_key_file(tls, v, NULL);
+ nni_tls_config_fini(tls);
+ return (rv);
}
static int
@@ -1089,7 +1093,9 @@ wss_dialer_set_ca_file(void *arg, const void *v, size_t sz, nni_opt_type t)
((rv = nni_ws_dialer_get_tls(d->dialer, &tls)) != 0)) {
return (rv);
}
- return (nng_tls_config_ca_file(tls, v));
+ rv = nng_tls_config_ca_file(tls, v);
+ nni_tls_config_fini(tls);
+ return (rv);
}
static int
@@ -1103,7 +1109,9 @@ wss_listener_set_ca_file(void *arg, const void *v, size_t sz, nni_opt_type t)
((rv = nni_ws_listener_get_tls(l->listener, &tls)) != 0)) {
return (rv);
}
- return (nng_tls_config_ca_file(tls, v));
+ rv = nng_tls_config_ca_file(tls, v);
+ nni_tls_config_fini(tls);
+ return (rv);
}
static int
@@ -1128,7 +1136,9 @@ wss_dialer_set_auth_mode(void *arg, const void *v, size_t sz, nni_opt_type t)
((rv = nni_ws_dialer_get_tls(d->dialer, &tls)) != 0)) {
return (rv);
}
- return (nng_tls_config_auth_mode(tls, mode));
+ rv = nng_tls_config_auth_mode(tls, mode);
+ nni_tls_config_fini(tls);
+ return (rv);
}
static int
@@ -1146,7 +1156,9 @@ wss_listener_set_auth_mode(void *arg, const void *v, size_t sz, nni_opt_type t)
((rv = nni_ws_listener_get_tls(l->listener, &tls)) != 0)) {
return (rv);
}
- return (nng_tls_config_auth_mode(tls, mode));
+ rv = nng_tls_config_auth_mode(tls, mode);
+ nni_tls_config_fini(tls);
+ return (rv);
}
static int
@@ -1162,7 +1174,9 @@ wss_dialer_set_tls_server_name(
return (rv);
}
- return (nng_tls_config_server_name(tls, v));
+ rv = nng_tls_config_server_name(tls, v);
+ nni_tls_config_fini(tls);
+ return (rv);
}
static nni_tran_option wss_dialer_options[] = {