From b37d394d4bba9c944569260348c8eef00a24b22a Mon Sep 17 00:00:00 2001 From: =?utf8?q?R=C3=A9mi=20Denis-Courmont?= Date: Thu, 10 Mar 2005 20:04:04 +0000 Subject: [PATCH] - Release certificate creds after terminating session --- modules/misc/gnutls.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/modules/misc/gnutls.c b/modules/misc/gnutls.c index a30d8a88ff..5be263d601 100644 --- a/modules/misc/gnutls.c +++ b/modules/misc/gnutls.c @@ -313,9 +313,13 @@ static void gnutls_ClientDelete( tls_session_t *p_session ) { /* On the client-side, credentials are re-allocated per session */ - gnutls_certificate_free_credentials( ((tls_client_sys_t *) - (p_session->p_sys))->x509_cred ); + gnutls_certificate_credentials x509_cred = + ((tls_client_sys_t *)(p_session->p_sys))->x509_cred; + gnutls_SessionClose( p_session ); + + /* credentials must be free'd *after* gnutls_deinit() */ + gnutls_certificate_free_credentials( x509_cred ); } @@ -631,17 +635,17 @@ static void gnutls_ServerDelete( tls_server_t *p_server ) { tls_server_sys_t *p_sys; - p_sys = (tls_server_sys_t *)p_server->p_sys; - gnutls_certificate_free_credentials( p_sys->x509_cred ); - gnutls_dh_params_deinit( p_sys->dh_params ); vlc_mutex_destroy( &p_sys->cache_lock ); + free( p_sys->p_cache ); vlc_object_detach( p_server ); vlc_object_destroy( p_server ); - free( p_sys->p_cache ); + /* all sessions depending on the server are now deinitialized */ + gnutls_certificate_free_credentials( p_sys->x509_cred ); + gnutls_dh_params_deinit( p_sys->dh_params ); free( p_sys ); } -- 2.39.5