summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@gnutls.org>2010-07-03 18:37:19 +0200
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2010-07-03 18:37:19 +0200
commit671f50958c0cdeebb528df0e8c54a281eaddf9dd (patch)
treea53e5e7ef8a40e7571940f54446ae818e590f37c
parent539776d5e5e6725024e5ba619c48980b089f3415 (diff)
downloadgnutls-671f50958c0cdeebb528df0e8c54a281eaddf9dd.tar.gz
Locks were converted to be in align with posix locks to easier wrap around them.
-rw-r--r--lib/gcrypt/init.c22
-rw-r--r--lib/includes/gnutls/gnutls.h.in6
-rw-r--r--lib/locks.c39
-rw-r--r--lib/pakchois/pakchois.c3
4 files changed, 29 insertions, 41 deletions
diff --git a/lib/gcrypt/init.c b/lib/gcrypt/init.c
index 4e2a065b1b..175cbd0acd 100644
--- a/lib/gcrypt/init.c
+++ b/lib/gcrypt/init.c
@@ -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);
}
diff --git a/lib/includes/gnutls/gnutls.h.in b/lib/includes/gnutls/gnutls.h.in
index 6ff039b247..95554320a2 100644
--- a/lib/includes/gnutls/gnutls.h.in
+++ b/lib/includes/gnutls/gnutls.h.in
@@ -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);
diff --git a/lib/locks.c b/lib/locks.c
index 7875119fb0..30ffd5302e 100644
--- a/lib/locks.c
+++ b/lib/locks.c
@@ -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;
}
diff --git a/lib/pakchois/pakchois.c b/lib/pakchois/pakchois.c
index a39977e090..45cd130949 100644
--- a/lib/pakchois/pakchois.c
+++ b/lib/pakchois/pakchois.c
@@ -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