[07/10] avformat: Initialize gnutls in ff_tls_init()

Message ID 1320154365-10834-7-git-send-email-martin@martin.st
State Committed
Headers show

Commit Message

Martin Storsjö Nov. 1, 2011, 1:32 p.m.
---
 libavformat/network.c |   20 ++++++++++++++++++++
 1 files changed, 20 insertions(+), 0 deletions(-)

Comments

Luca Barbato Nov. 4, 2011, 8:38 p.m. | #1
On 11/1/11 6:32 AM, Martin Storsjö wrote:
> ---
>   libavformat/network.c |   20 ++++++++++++++++++++
>   1 files changed, 20 insertions(+), 0 deletions(-)
>

Looks ok.

Patch

diff --git a/libavformat/network.c b/libavformat/network.c
index 291dc8c..e5d77de 100644
--- a/libavformat/network.c
+++ b/libavformat/network.c
@@ -53,6 +53,16 @@  static unsigned long openssl_thread_id(void)
 #endif
 #endif
 #endif
+#if CONFIG_GNUTLS
+#include <gnutls/gnutls.h>
+#if THREADS && GNUTLS_VERSION_NUMBER <= 0x020b00
+#include <gcrypt.h>
+#include <errno.h>
+#undef malloc
+#undef free
+GCRY_THREAD_OPTION_PTHREAD_IMPL;
+#endif
+#endif
 
 void ff_tls_init(void)
 {
@@ -76,6 +86,13 @@  void ff_tls_init(void)
     }
 #endif
 #endif
+#if CONFIG_GNUTLS
+#if THREADS && GNUTLS_VERSION_NUMBER < 0x020b00
+    if (gcry_control(GCRYCTL_ANY_INITIALIZATION_P) == 0)
+        gcry_control(GCRYCTL_SET_THREAD_CBS, &gcry_threads_pthread);
+#endif
+    gnutls_global_init();
+#endif
     avpriv_unlock_avformat();
 }
 
@@ -96,6 +113,9 @@  void ff_tls_deinit(void)
 #endif
     }
 #endif
+#if CONFIG_GNUTLS
+    gnutls_global_deinit();
+#endif
     avpriv_unlock_avformat();
 }