return dynlock;
}
-static void _winpr_openssl_dynlock_lock(int mode, struct CRYPTO_dynlock_value* dynlock, const char* file, int line)
+static void _winpr_openssl_dynlock_lock(int mode, struct CRYPTO_dynlock_value* dynlock,
+ const char* file, int line)
{
if (mode & CRYPTO_LOCK)
{
}
}
-static void _winpr_openssl_dynlock_destroy(struct CRYPTO_dynlock_value* dynlock, const char* file, int line)
+static void _winpr_openssl_dynlock_destroy(struct CRYPTO_dynlock_value* dynlock, const char* file,
+ int line)
{
CloseHandle(dynlock->mutex);
free(dynlock);
/* OpenSSL dynamic locking */
if (CRYPTO_get_dynlock_create_callback() ||
- CRYPTO_get_dynlock_lock_callback() ||
- CRYPTO_get_dynlock_destroy_callback())
+ CRYPTO_get_dynlock_lock_callback() ||
+ CRYPTO_get_dynlock_destroy_callback())
{
WLog_WARN(TAG, "dynamic locking callbacks are already set");
}
}
#ifdef WINPR_OPENSSL_LOCKING_REQUIRED
+
if (flags & WINPR_SSL_INIT_ENABLE_LOCKING)
{
if (!_winpr_openssl_initialize_locking())
return FALSE;
}
}
+
#endif
/* SSL_load_error_strings() is void */
#if (OPENSSL_VERSION_NUMBER < 0x10100000L) || defined(LIBRESSL_VERSION_NUMBER)
OpenSSL_add_all_digests();
OpenSSL_add_all_ciphers();
#else
+
if (OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS |
- OPENSSL_INIT_LOAD_CRYPTO_STRINGS |
- OPENSSL_INIT_ADD_ALL_CIPHERS |
- OPENSSL_INIT_ADD_ALL_DIGESTS |
- OPENSSL_INIT_ENGINE_ALL_BUILTIN, NULL) != 1)
+ OPENSSL_INIT_LOAD_CRYPTO_STRINGS |
+ OPENSSL_INIT_ADD_ALL_CIPHERS |
+ OPENSSL_INIT_ADD_ALL_DIGESTS |
+ OPENSSL_INIT_ENGINE_ALL_BUILTIN, NULL) != 1)
return FALSE;
+
#endif
g_winpr_openssl_initialized_by_winpr = TRUE;
return TRUE;
ERR_free_strings();
EVP_cleanup();
#endif
+#ifdef WINPR_OPENSSL_LOCKING_REQUIRED
flags |= WINPR_SSL_CLEANUP_THREAD;
+#endif
}
#ifdef WINPR_OPENSSL_LOCKING_REQUIRED
+
if (flags & WINPR_SSL_CLEANUP_THREAD)
{
#if (OPENSSL_VERSION_NUMBER < 0x10000000L) || defined(LIBRESSL_VERSION_NUMBER)
ERR_remove_thread_state(NULL);
#endif
}
+
#endif
return TRUE;
}