X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Finit_globals.c;h=6bd03fb0db02c6a9d99224454f4ec356268e1771;hp=0800a4bc836744c91c8c6e5af3c647e266e9ad37;hb=8cb8947e3a7bff4dbf8f124871cb4905df1adce7;hpb=71e066dd201f095184b98199399ac7965f7f176e diff --git a/src/init_globals.c b/src/init_globals.c index 0800a4b..6bd03fb 100644 --- a/src/init_globals.c +++ b/src/init_globals.c @@ -15,6 +15,7 @@ #if YAZ_POSIX_THREADS #include #endif +#include #if HAVE_GNUTLS_H #include @@ -35,6 +36,10 @@ static pthread_mutex_t yaz_init_mutex = PTHREAD_MUTEX_INITIALIZER; extern void yaz_log_init_globals(void); +#if HAVE_GCRYPT_H +GCRY_THREAD_OPTION_PTHREAD_IMPL; +#endif + void yaz_init_globals(void) { if (yaz_init_flag) @@ -45,6 +50,10 @@ void yaz_init_globals(void) if (!yaz_init_flag) { yaz_log_init_globals(); +#if HAVE_GCRYPT_H + /* POSIX threads locking. In case gnutls_global_init do not override */ + gcry_control(GCRYCTL_SET_THREAD_CBS, &gcry_threads_pthread); +#endif #if HAVE_GNUTLS_H gnutls_global_init(); #endif @@ -55,11 +64,11 @@ void yaz_init_globals(void) gcry_control(GCRYCTL_INITIALIZATION_FINISHED, NULL, 0); } #endif - yaz_init_flag = 1; - } #if YAZ_HAVE_EXSLT - exsltRegisterAll(); + exsltRegisterAll(); #endif + yaz_init_flag = 1; /* must be last, before unlocking */ + } #if YAZ_POSIX_THREADS pthread_mutex_unlock(&yaz_init_mutex); #endif