From 6016fd5879638208a2f6db6fd0fc60300871c27b Mon Sep 17 00:00:00 2001 From: Vincent Richard Date: Tue, 8 Dec 2009 09:31:06 +0000 Subject: [PATCH] Initialize multi-threading for GNUTLS/GCrypt (thanks to Bartek Szurgot). --- src/net/tls/TLSSession.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/net/tls/TLSSession.cpp b/src/net/tls/TLSSession.cpp index 1146d1b6..d4eab3e6 100644 --- a/src/net/tls/TLSSession.cpp +++ b/src/net/tls/TLSSession.cpp @@ -24,6 +24,13 @@ #include #include +#include "vmime/config.hpp" + +#if VMIME_HAVE_PTHREAD +# include +# include +#endif // VMIME_HAVE_PTHREAD + #include "vmime/net/tls/TLSSession.hpp" #include "vmime/exception.hpp" @@ -38,6 +45,14 @@ #endif // VMIME_DEBUG && GNUTLS_DEBUG +#if VMIME_HAVE_PTHREAD && defined(GCRY_THREAD_OPTION_PTHREAD_IMPL) +extern "C" +{ + GCRY_THREAD_OPTION_PTHREAD_IMPL; +} +#endif // VMIME_HAVE_PTHREAD && defined(GCRY_THREAD_OPTION_PTHREAD_IMPL + + namespace vmime { namespace net { namespace tls { @@ -50,6 +65,10 @@ struct TLSGlobal { TLSGlobal() { +#if VMIME_HAVE_PTHREAD && defined(GCRY_THREAD_OPTION_PTHREAD_IMPL) + gcry_control(GCRYCTL_SET_THREAD_CBS, &gcry_threads_pthread); +#endif // VMIME_HAVE_PTHREAD && defined(GCRY_THREAD_OPTION_PTHREAD_IMPL + gnutls_global_init(); //gnutls_global_init_extra();