Commit b541537c authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

curl_global_init() support for CURL_GLOBAL_NOT_SSL

parent 285e998f
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -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
}
+3 −2
Original line number Diff line number Diff line
@@ -80,8 +80,9 @@

CURLcode curl_global_init(long flags)
{
  flags = 0; /* not currently used */
  if(!(flags & CURL_GLOBAL_NOT_SSL))
    Curl_SSL_init();

  return CURLE_OK;
}

+16 −8
Original line number Diff line number Diff line
@@ -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
  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();
  }
#endif  
}