diff options
author | Daniel Stenberg <daniel@haxx.se> | 2001-05-30 08:00:29 +0000 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2001-05-30 08:00:29 +0000 |
commit | b541537c66d19660635703b18bc344789121a409 (patch) | |
tree | 9e446f35042ad65e6dc3952006f466d0ecaf867e /lib | |
parent | 285e998faec7094d0093071c5262281fda5e04f4 (diff) |
curl_global_init() support for CURL_GLOBAL_NOT_SSL
Diffstat (limited to 'lib')
-rw-r--r-- | lib/easy.c | 5 | ||||
-rw-r--r-- | lib/ssluse.c | 24 |
2 files changed, 19 insertions, 10 deletions
diff --git a/lib/easy.c b/lib/easy.c index c98727e78..a4de38e17 100644 --- a/lib/easy.c +++ b/lib/easy.c @@ -80,8 +80,9 @@ CURLcode curl_global_init(long flags) { - flags = 0; /* not currently used */ - Curl_SSL_init(); + if(!(flags & CURL_GLOBAL_NOT_SSL)) + Curl_SSL_init(); + return CURLE_OK; } diff --git a/lib/ssluse.c b/lib/ssluse.c index 3707a4965..0d50c07f4 100644 --- a/lib/ssluse.c +++ b/lib/ssluse.c @@ -235,17 +235,21 @@ int cert_verify_callback(int ok, X509_STORE_CTX *ctx) #endif +#ifdef USE_SSLEAY +/* "global" init done? */ +static int init_ssl=0; +#endif + /* Global init */ void Curl_SSL_init(void) { #ifdef USE_SSLEAY - static int only_once=0; /* make sure this is only done once */ - if(0 != only_once) + if(0 != init_ssl) return; - only_once++; /* never again */ + init_ssl++; /* never again */ /* Lets get nice error messages */ SSL_load_error_strings(); @@ -259,12 +263,16 @@ void Curl_SSL_init(void) void Curl_SSL_cleanup(void) { #ifdef USE_SSLEAY - /* Free the SSL error strings */ - ERR_free_strings(); + if(init_ssl) { + /* only cleanup if we did a previous init */ + + /* Free the SSL error strings */ + ERR_free_strings(); - /* EVP_cleanup() removes all ciphers and digests from the - table. */ - EVP_cleanup(); + /* EVP_cleanup() removes all ciphers and digests from the + table. */ + EVP_cleanup(); + } #endif } |