diff options
author | Johannes Schindelin <johannes.schindelin@gmx.de> | 2020-04-17 23:04:14 +0200 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2020-04-20 09:15:47 +0200 |
commit | ff7a3107ed7f46bca8d1b4f989b1a83cd6e47adf (patch) | |
tree | 5c218d16e791428c8f92f72a07011336bec2e55b /lib | |
parent | 369ce38ac1dacd16a87f91694a05c5c143e18d80 (diff) |
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 <johannes.schindelin@gmx.de>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/vtls/vtls.c | 6 |
1 files changed, 6 insertions, 0 deletions
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; } } |