From 73339770a43a28119eb9db1aafd09a6acf9ce5cc Mon Sep 17 00:00:00 2001
From: Christian Spielberger <c.spielberger@commend.com>
Date: Tue, 6 Dec 2022 16:32:19 +0100
Subject: [PATCH] tls: clear session callbacks in destructor

This fixes a segmentation fault that appear when the tls object is freed before
the SSL object and TLS session reuse was enabled.
---
 src/tls/openssl/tls.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/tls/openssl/tls.c b/src/tls/openssl/tls.c
index ef22b0e04..88a14fed9 100644
--- a/src/tls/openssl/tls.c
+++ b/src/tls/openssl/tls.c
@@ -98,8 +98,11 @@ static void destructor(void *data)
 {
 	struct tls *tls = data;
 
-	if (tls->ctx)
+	if (tls->ctx) {
+		SSL_CTX_sess_set_new_cb(tls->ctx, NULL);
+		SSL_CTX_sess_set_remove_cb(tls->ctx, NULL);
 		SSL_CTX_free(tls->ctx);
+	}
 
 	if (tls->cert)
 		X509_free(tls->cert);