[vlc-commits] gnutls: drop useless global mutex and init if version >= 3.3.0
Rémi Denis-Courmont
git at videolan.org
Sat Aug 23 16:35:25 CEST 2014
vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Sat Aug 23 17:26:19 2014 +0300| [6c12257639281c7631c2159d1efd3a052df09c34] | committer: Rémi Denis-Courmont
gnutls: drop useless global mutex and init if version >= 3.3.0
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=6c12257639281c7631c2159d1efd3a052df09c34
---
modules/misc/gnutls.c | 68 ++++++++++++++++++++++++++++---------------------
1 file changed, 39 insertions(+), 29 deletions(-)
diff --git a/modules/misc/gnutls.c b/modules/misc/gnutls.c
index 8ef2455..a09af8a 100644
--- a/modules/misc/gnutls.c
+++ b/modules/misc/gnutls.c
@@ -36,52 +36,64 @@
#include <gnutls/x509.h>
#include "dhparams.h"
+#if (GNUTLS_VERSION_NUMBER >= 0x030300)
+static int gnutls_Init (vlc_object_t *obj)
+{
+ const char *version = gnutls_check_version ("3.3.0");
+ if (version == NULL)
+ {
+ msg_Err (obj, "unsupported GnuTLS version");
+ return -1;
+ }
+ msg_Dbg (p_this, "using GnuTLS verson %s", version);
+ return 0;
+}
+
+# define gnutls_Deinit() (void)0
+#else
static vlc_mutex_t gnutls_mutex = VLC_STATIC_MUTEX;
/**
* Initializes GnuTLS with proper locking.
* @return VLC_SUCCESS on success, a VLC error code otherwise.
*/
-static int gnutls_Init (vlc_object_t *p_this)
+static int gnutls_Init (vlc_object_t *obj)
{
- int ret = VLC_EGENERIC;
-
- vlc_mutex_lock (&gnutls_mutex);
- if (gnutls_global_init ())
+ const char *version = gnutls_check_version ("3.1.9");
+ if (version == NULL)
{
- msg_Err (p_this, "cannot initialize GnuTLS");
- goto error;
+ msg_Err (obj, "unsupported GnuTLS version");
+ return -1;
}
+ msg_Dbg (obj, "using GnuTLS verson %s", version);
- const char *psz_version = gnutls_check_version ("3.1.9");
- if (psz_version == NULL)
+ if (gnutls_check_version ("3.3.0") == NULL)
{
- msg_Err (p_this, "unsupported GnuTLS version");
- gnutls_global_deinit ();
- goto error;
- }
+ int val;
- msg_Dbg (p_this, "GnuTLS v%s initialized", psz_version);
- ret = VLC_SUCCESS;
+ vlc_mutex_lock (&gnutls_mutex);
+ val = gnutls_global_init ();
+ vlc_mutex_unlock (&gnutls_mutex);
-error:
- vlc_mutex_unlock (&gnutls_mutex);
- return ret;
+ if (val)
+ {
+ msg_Err (obj, "cannot initialize GnuTLS");
+ return -1;
+ }
+ }
+ return 0;
}
-
/**
* Deinitializes GnuTLS.
*/
-static void gnutls_Deinit (vlc_object_t *p_this)
+static void gnutls_Deinit (void)
{
vlc_mutex_lock (&gnutls_mutex);
-
gnutls_global_deinit ();
- msg_Dbg (p_this, "GnuTLS deinitialized");
vlc_mutex_unlock (&gnutls_mutex);
}
-
+#endif
static int gnutls_Error (vlc_object_t *obj, int val)
{
@@ -412,7 +424,7 @@ static int OpenClient (vlc_tls_creds_t *crd)
{
msg_Err (crd, "cannot allocate credentials: %s",
gnutls_strerror (val));
- gnutls_Deinit (VLC_OBJECT(crd));
+ gnutls_Deinit ();
return VLC_EGENERIC;
}
@@ -439,8 +451,7 @@ static void CloseClient (vlc_tls_creds_t *crd)
gnutls_certificate_credentials_t x509 = crd->sys;
gnutls_certificate_free_credentials (x509);
-
- gnutls_Deinit (VLC_OBJECT(crd));
+ gnutls_Deinit ();
}
#ifdef ENABLE_SOUT
@@ -567,7 +578,7 @@ static int OpenServer (vlc_tls_creds_t *crd, const char *cert, const char *key)
error:
free (sys);
- gnutls_Deinit (VLC_OBJECT(crd));
+ gnutls_Deinit ();
return VLC_EGENERIC;
}
@@ -582,8 +593,7 @@ static void CloseServer (vlc_tls_creds_t *crd)
gnutls_certificate_free_credentials (sys->x509_cred);
gnutls_dh_params_deinit (sys->dh_params);
free (sys);
-
- gnutls_Deinit (VLC_OBJECT(crd));
+ gnutls_Deinit ();
}
#endif
More information about the vlc-commits
mailing list