aboutsummaryrefslogtreecommitdiff
path: root/src/sp
diff options
context:
space:
mode:
Diffstat (limited to 'src/sp')
-rw-r--r--src/sp/transport/dtls/dtls.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/sp/transport/dtls/dtls.c b/src/sp/transport/dtls/dtls.c
index 43c2a7cd..a4b1a6fb 100644
--- a/src/sp/transport/dtls/dtls.c
+++ b/src/sp/transport/dtls/dtls.c
@@ -1077,6 +1077,9 @@ dtls_ep_fini(void *arg)
{
dtls_ep *ep = arg;
+ if (ep->tlscfg != NULL) {
+ nng_tls_config_free(ep->tlscfg);
+ }
nni_aio_fini(&ep->timeaio);
nni_aio_fini(&ep->resaio);
nni_aio_fini(&ep->tx_aio);
@@ -1578,7 +1581,12 @@ dtls_ep_set_tls(void *arg, nng_tls_config *cfg)
nni_mtx_unlock(&ep->mtx);
return (NNG_EBUSY);
}
- ep->tlscfg = cfg;
+ nng_tls_config *old = ep->tlscfg;
+ ep->tlscfg = cfg;
+ nng_tls_config_hold(cfg);
+ if (old != NULL) {
+ nng_tls_config_free(old);
+ }
nni_mtx_unlock(&ep->mtx);
return (NNG_OK);
}