* src/remote_internal.c: Register thread functions for gcrypt Signed-off-by: Daniel P. Berrange <berrange@xxxxxxxxxx> --- src/remote_internal.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 43 insertions(+), 0 deletions(-) diff --git a/src/remote_internal.c b/src/remote_internal.c index f20ed6e..65dee25 100644 --- a/src/remote_internal.c +++ b/src/remote_internal.c @@ -59,6 +59,7 @@ #include <rpc/types.h> #include <rpc/xdr.h> +#include <gcrypt.h> #include <gnutls/gnutls.h> #include <gnutls/x509.h> #include "gnutls_1_0_compat.h" @@ -1065,6 +1066,46 @@ check_cert_file (virConnectPtr conn, const char *type, const char *file) return 0; } +static int remote_mutex_init (void **priv) +{ \ + virMutexPtr lock = NULL; + + if (VIR_ALLOC(lock) < 0) + return ENOMEM; + + if (virMutexInit(lock) < 0) + return errno; + + *priv = lock; + return 0; +} + +static int remote_mutex_destroy (void **lock) +{ + virMutexDestroy(*(virMutexPtr *)lock); + return 0; +} + +static int remote_mutex_lock (void **lock) +{ + virMutexLock(*(virMutexPtr *)lock); + return 0; +} +static int remote_mutex_unlock (void **lock) +{ + virMutexUnlock(*(virMutexPtr *)lock); + return 0; +} + +static struct gcry_thread_cbs remote_thread_cbs = { + (GCRY_THREAD_OPTION_USER | (GCRY_THREAD_OPTION_VERSION << 8)), + NULL, + remote_mutex_init, + remote_mutex_destroy, + remote_mutex_lock, + remote_mutex_unlock, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +}; static int initialise_gnutls (virConnectPtr conn) @@ -1074,6 +1115,8 @@ initialise_gnutls (virConnectPtr conn) if (initialised) return 0; + gcry_control(GCRYCTL_SET_THREAD_CBS, &remote_thread_cbs); + gcry_check_version(NULL); gnutls_global_init (); /* X509 stuff */ -- 1.6.2.5 -- Libvir-list mailing list Libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list