From b541537c66d19660635703b18bc344789121a409 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Wed, 30 May 2001 08:00:29 +0000 Subject: [PATCH] curl_global_init() support for CURL_GLOBAL_NOT_SSL --- include/curl/curl.h | 3 +++ lib/easy.c | 5 +++-- lib/ssluse.c | 24 ++++++++++++++++-------- 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/include/curl/curl.h b/include/curl/curl.h index f4cf0318c..a6b9d7c37 100644 --- a/include/curl/curl.h +++ b/include/curl/curl.h @@ -573,6 +573,9 @@ typedef enum { CURLCLOSEPOLICY_LAST /* last, never use this */ } curl_closepolicy; +#define CURL_GLOBAL_NOT_SSL (1<<0) +#define CURL_GLOBAL_NOTHING CURL_GLOBAL_NOT_SSL +#define CURL_GLOBAL_DEFAULT 0 #ifdef __cplusplus } 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 }