summaryrefslogtreecommitdiffstats
path: root/libvncclient/tls_openssl.c
diff options
context:
space:
mode:
Diffstat (limited to 'libvncclient/tls_openssl.c')
-rw-r--r--libvncclient/tls_openssl.c27
1 files changed, 14 insertions, 13 deletions
diff --git a/libvncclient/tls_openssl.c b/libvncclient/tls_openssl.c
index 88e31f5..b6df946 100644
--- a/libvncclient/tls_openssl.c
+++ b/libvncclient/tls_openssl.c
@@ -568,19 +568,20 @@ void FreeTLS(rfbClient* client)
{
int i;
- if (mutex_buf == NULL)
- return (0);
-
- CRYPTO_set_dynlock_create_callback(NULL);
- CRYPTO_set_dynlock_lock_callback(NULL);
- CRYPTO_set_dynlock_destroy_callback(NULL);
-
- CRYPTO_set_locking_callback(NULL);
- CRYPTO_set_id_callback(NULL);
+ if (mutex_buf != NULL) {
+ CRYPTO_set_dynlock_create_callback(NULL);
+ CRYPTO_set_dynlock_lock_callback(NULL);
+ CRYPTO_set_dynlock_destroy_callback(NULL);
+
+ CRYPTO_set_locking_callback(NULL);
+ CRYPTO_set_id_callback(NULL);
+
+ for (i = 0; i < CRYPTO_num_locks(); i++)
+ pthread_mutex_destroy(&mutex_buf[i]);
+ free(mutex_buf);
+ mutex_buf = NULL;
+ }
- for (i = 0; i < CRYPTO_num_locks(); i++)
- pthread_mutex_destroy(&mutex_buf[i]);
- free(mutex_buf);
- mutex_buf = NULL;
+ SSL_free(client->tlsSession);
}