diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/sp/transport/dtls/dtls.c | 10 |
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); } |
