diff --git a/src/libvirt.c b/src/libvirt.c index c5221f5370e281ac4f618b3560db1180cc8c13e5..d7b441653bf4d1eada5eca2a9fa47af4b70b14eb 100644 --- a/src/libvirt.c +++ b/src/libvirt.c @@ -409,8 +409,19 @@ virGlobalInit(void) goto error; #ifdef WITH_GNUTLS - gcry_control(GCRYCTL_SET_THREAD_CBS, &virTLSThreadImpl); - gcry_check_version(NULL); + /* + * This sequence of API calls it copied exactly from + * gnutls 2.12.23 source lib/gcrypt/init.c, with + * exception that GCRYCTL_ENABLE_QUICK_RANDOM, is + * dropped + */ + if (gcry_control(GCRYCTL_ANY_INITIALIZATION_P) == 0) { + gcry_control(GCRYCTL_SET_THREAD_CBS, &virTLSThreadImpl); + gcry_check_version(NULL); + + gcry_control(GCRYCTL_DISABLE_SECMEM, NULL, 0); + gcry_control(GCRYCTL_INITIALIZATION_FINISHED, NULL, 0); + } #endif virLogSetFromEnv();