summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Martín Nieto <cmn@dwim.me>2015-06-08 12:21:36 +0200
committerCarlos Martín Nieto <cmn@dwim.me>2015-06-08 12:21:36 +0200
commitc0d7999263000371e93f7ac1d6c25f32402facd5 (patch)
tree4910e207a9af4bee6c3c19367753f8e3cb9b1a20
parentb6011e296e4db6942d71f5a8548d1308353927ee (diff)
parent20f8edb7a5e438adcd3528ca10d233503e124022 (diff)
downloadlibgit2-c0d7999263000371e93f7ac1d6c25f32402facd5.tar.gz
Merge pull request #3188 from thentenaar/clean-up-after-openssl
global: Ensure we free our SSL context.
-rw-r--r--src/global.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/global.c b/src/global.c
index 9f1a0bf10..3f20bfd31 100644
--- a/src/global.c
+++ b/src/global.c
@@ -116,6 +116,20 @@ static void init_ssl(void)
#endif
}
+/**
+ * This function aims to clean-up the SSL context which
+ * we allocated.
+ */
+static void uninit_ssl(void)
+{
+#ifdef GIT_OPENSSL
+ if (git__ssl_ctx) {
+ SSL_CTX_free(git__ssl_ctx);
+ git__ssl_ctx = NULL;
+ }
+#endif
+}
+
int git_openssl_set_locking(void)
{
#ifdef GIT_OPENSSL
@@ -333,6 +347,7 @@ int git_libgit2_shutdown(void)
/* Shut down any subsystems that have global state */
git__shutdown();
+ uninit_ssl();
ptr = pthread_getspecific(_tls_key);
pthread_setspecific(_tls_key, NULL);
@@ -391,6 +406,7 @@ int git_libgit2_shutdown(void)
git__shutdown();
git__global_state_cleanup(&__state);
+ uninit_ssl();
return 0;
}