From ff7a3107ed7f46bca8d1b4f989b1a83cd6e47adf Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Fri, 17 Apr 2020 23:04:14 +0200 Subject: multi-ssl: reset the SSL backend on `Curl_global_cleanup()` When cURL is compiled with support for multiple SSL backends, it is possible to configure an SSL backend via `curl_global_sslset()`, but only *before* `curl_global_init()` was called. If another SSL backend should be used after that, a user might be tempted to call `curl_global_cleanup()` to start over. However, we did not foresee that use case and forgot to reset the SSL backend in that cleanup. Let's allow that use case. Fixes #5255 Closes #5257 Reported-by: davidedec on github Signed-off-by: Johannes Schindelin --- lib/vtls/vtls.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/vtls/vtls.c b/lib/vtls/vtls.c index badd93d08..f1b525227 100644 --- a/lib/vtls/vtls.c +++ b/lib/vtls/vtls.c @@ -174,6 +174,9 @@ int Curl_ssl_init(void) return Curl_ssl->init(); } +#if defined(CURL_WITH_MULTI_SSL) +static const struct Curl_ssl Curl_ssl_multi; +#endif /* Global cleanup */ void Curl_ssl_cleanup(void) @@ -181,6 +184,9 @@ void Curl_ssl_cleanup(void) if(init_ssl) { /* only cleanup if we did a previous init */ Curl_ssl->cleanup(); +#if defined(CURL_WITH_MULTI_SSL) + Curl_ssl = &Curl_ssl_multi; +#endif init_ssl = FALSE; } } -- cgit v1.2.3