in flood_net_ssl.c [134:173]
apr_status_t ssl_init_socket(apr_pool_t *pool)
{
#if APR_HAS_THREADS
int i, numlocks;
#endif
ssl_pool = pool;
SSL_library_init();
OpenSSL_add_ssl_algorithms();
SSL_load_error_strings();
ERR_load_crypto_strings();
#if ! FLOOD_HAS_DEVRAND
load_rand();
#endif
#if APR_HAS_THREADS
numlocks = CRYPTO_num_locks();
ssl_locks = apr_palloc(pool, sizeof(apr_thread_mutex_t*)*numlocks);
for (i = 0; i < numlocks; i++) {
apr_status_t rv;
/* Intraprocess locks don't /need/ a filename... */
rv = apr_thread_mutex_create(&ssl_locks[i], APR_THREAD_MUTEX_DEFAULT,
ssl_pool);
if (rv != APR_SUCCESS) {
/* FIXME: error out here */
}
}
CRYPTO_set_locking_callback(ssl_lock);
CRYPTO_set_id_callback(ssl_id);
CRYPTO_set_dynlock_create_callback(ssl_dyn_create);
CRYPTO_set_dynlock_lock_callback(ssl_dyn_lock);
CRYPTO_set_dynlock_destroy_callback(ssl_dyn_destroy);
#endif
return APR_SUCCESS;
}