]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
Locks were converted to be in align with posix locks to easier wrap around them.
authorNikos Mavrogiannopoulos <nmav@gnutls.org>
Sat, 3 Jul 2010 16:37:19 +0000 (18:37 +0200)
committerNikos Mavrogiannopoulos <nmav@gnutls.org>
Sat, 3 Jul 2010 16:37:19 +0000 (18:37 +0200)
lib/gcrypt/init.c
lib/includes/gnutls/gnutls.h.in
lib/locks.c
lib/pakchois/pakchois.c

index 4e2a065b1bb140840ba77ab771913fa8f61a56bf..175cbd0acd8d759eec0833a232453c2aacb5fd04 100644 (file)
@@ -43,22 +43,6 @@ static struct gcry_thread_cbs gct = {
   .recvmsg = NULL,
 };
 
-static int wrap_gcry_mutex_lock(void** m)
-{
-  return gnutls_mutex_lock(*m);
-}
-
-static int wrap_gcry_mutex_unlock(void** m)
-{
-  return gnutls_mutex_unlock(*m);
-}
-
-static int wrap_gcry_mutex_deinit(void** m)
-{
-  gnutls_mutex_deinit(*m);
-  return 0;
-}
-
 int gnutls_crypto_init(void)
 {
   /* Initialize libgcrypt if it hasn't already been initialized. */
@@ -69,9 +53,9 @@ int gnutls_crypto_init(void)
       if (gnutls_mutex_init != NULL) 
         {
          gct.mutex_init = gnutls_mutex_init;
-         gct.mutex_destroy = wrap_gcry_mutex_deinit;
-         gct.mutex_lock = wrap_gcry_mutex_lock;
-         gct.mutex_unlock = wrap_gcry_mutex_unlock;
+         gct.mutex_destroy = gnutls_mutex_deinit;
+         gct.mutex_lock = gnutls_mutex_lock;
+         gct.mutex_unlock = gnutls_mutex_unlock;
 
          gcry_control (GCRYCTL_SET_THREAD_CBS, &gct);
         }
index 6ff039b2476826714ad9d8d032c7fd31755d1b64..95554320a2280f06f5319b124941ab3d607444f0 100644 (file)
@@ -1123,9 +1123,9 @@ extern "C"
   void gnutls_global_deinit (void);
 
   typedef int (*mutex_init_func)(void** mutex);
-  typedef int (*mutex_lock_func)(void* mutex);
-  typedef int (*mutex_unlock_func)(void* mutex);
-  typedef void (*mutex_deinit_func)(void* mutex);
+  typedef int (*mutex_lock_func)(void** mutex);
+  typedef int (*mutex_unlock_func)(void** mutex);
+  typedef int (*mutex_deinit_func)(void** mutex);
   
   void gnutls_global_set_mutex(mutex_init_func init, mutex_deinit_func, 
     mutex_lock_func, mutex_unlock_func);
index 7875119fb035af22b4f246f6ddb28e6d3a88fd35..30ffd5302eb69adfe6df13ded9bca5d96da8a6dd 100644 (file)
@@ -51,21 +51,23 @@ static int gnutls_system_mutex_init (void **priv)
   return 0;
 }
 
-static void gnutls_system_mutex_deinit (void *priv)
+static int gnutls_system_mutex_deinit (void **priv)
 {
-  DeleteCriticalSection(priv);
-  free(priv);
+  DeleteCriticalSection((CRITICAL_SECTION*)*priv);
+  free(*priv);
+  
+  return 0;
 }
 
-static int gnutls_system_mutex_lock (void *priv)
+static int gnutls_system_mutex_lock (void **priv)
 {
-  EnterCriticalSection(priv);
+  EnterCriticalSection((CRITICAL_SECTION*)*priv);
   return 0;
 }
 
-static int gnutls_system_mutex_unlock (void *priv)
+static int gnutls_system_mutex_unlock (void **priv)
 {
-  LeaveCriticalSection(priv);
+  LeaveCriticalSection((CRITICAL_SECTION*)*priv);
   return 0;
 }
 
@@ -101,15 +103,16 @@ static int gnutls_system_mutex_init (void **priv)
   return 0;
 }
 
-static void gnutls_system_mutex_deinit (void *priv)
+static int gnutls_system_mutex_deinit (void **priv)
 {
-  pthread_mutex_destroy(priv);
-  free(priv);
+  pthread_mutex_destroy((pthread_mutex_t*)*priv);
+  free(*priv);
+  return 0;
 }
 
-static int gnutls_system_mutex_lock (void *priv)
+static int gnutls_system_mutex_lock (void **priv)
 {
-  if (pthread_mutex_lock(priv))
+  if (pthread_mutex_lock((pthread_mutex_t*)*priv))
     {
         gnutls_assert();
         return GNUTLS_E_LOCKING_ERROR;
@@ -118,9 +121,9 @@ static int gnutls_system_mutex_lock (void *priv)
   return 0;
 }
 
-static int gnutls_system_mutex_unlock (void *priv)
+static int gnutls_system_mutex_unlock (void **priv)
 {
-  if (pthread_mutex_unlock(priv))
+  if (pthread_mutex_unlock((pthread_mutex_t*)*priv))
     {
         gnutls_assert();
         return GNUTLS_E_LOCKING_ERROR;
@@ -143,17 +146,17 @@ static int gnutls_system_mutex_init (void **priv)
   return 0;
 }
 
-static void gnutls_system_mutex_deinit (void *priv)
+static int gnutls_system_mutex_deinit (void **priv)
 {
-  return;
+  return 0;
 }
 
-static int gnutls_system_mutex_lock (void *priv)
+static int gnutls_system_mutex_lock (void **priv)
 {
   return 0;
 }
 
-static int gnutls_system_mutex_unlock (void *priv)
+static int gnutls_system_mutex_unlock (void **priv)
 {
   return 0;
 }
index a39977e090d051a60204d7360435aa662b2aa37b..45cd130949bae6da22a78e1f32be6dcc2d4eb16f 100644 (file)
@@ -522,7 +522,8 @@ static void pakchois_destructor(void)
 
 static void pakchois_destructor(void)
 {
-       gnutls_mutex_deinit(&provider_mutex);
+       if (provider_mutex != NULL)
+               gnutls_mutex_deinit(&provider_mutex);
 }
 #else
 #warning need destructor support