b05e0d3aa2
Thread locking should work fine by default in gnutls.
105 lines
2.6 KiB
Diff
105 lines
2.6 KiB
Diff
diff -up abiword-3.0.0/plugins/collab/backends/service/xp/tls_tunnel.cpp.nogcrypt abiword-3.0.0/plugins/collab/backends/service/xp/tls_tunnel.cpp
|
|
--- abiword-3.0.0/plugins/collab/backends/service/xp/tls_tunnel.cpp.nogcrypt 2014-04-22 22:28:24.589947888 +0200
|
|
+++ abiword-3.0.0/plugins/collab/backends/service/xp/tls_tunnel.cpp 2014-04-22 22:31:36.729898497 +0200
|
|
@@ -49,89 +49,7 @@ typedef boost::shared_ptr<asio::ip::tcp:
|
|
typedef boost::shared_ptr<gnutls_session_t> session_ptr_t;
|
|
typedef boost::shared_ptr< std::vector<char> > buffer_ptr_t;
|
|
|
|
-class mutex {
|
|
-public:
|
|
- mutex() {
|
|
-#ifdef WIN32
|
|
- repr = CreateMutex(0, FALSE, 0);
|
|
-#else
|
|
- pthread_mutex_init(&repr, NULL);
|
|
-#endif
|
|
- }
|
|
-
|
|
- void lock() {
|
|
-#ifdef WIN32
|
|
- WaitForSingleObject(repr, INFINITE);
|
|
-#else
|
|
- pthread_mutex_lock(&repr);
|
|
-#endif
|
|
- }
|
|
-
|
|
- void unlock() {
|
|
-#ifdef WIN32
|
|
- ReleaseMutex(repr);
|
|
-#else
|
|
- pthread_mutex_unlock(&repr);
|
|
-#endif
|
|
- }
|
|
-
|
|
- ~mutex()
|
|
- {
|
|
-#ifdef WIN32
|
|
- CloseHandle(repr);
|
|
-#else
|
|
- pthread_mutex_destroy(&repr);
|
|
-#endif
|
|
- }
|
|
-
|
|
-private:
|
|
- mutex( const mutex& );
|
|
- const mutex& operator=( const mutex& );
|
|
-
|
|
-#ifdef WIN32
|
|
- HANDLE repr;
|
|
-#else
|
|
- pthread_mutex_t repr;
|
|
-#endif
|
|
-};
|
|
-
|
|
-static int gcry_tunnel_mutex_init(void **priv)
|
|
-{
|
|
- if (!priv)
|
|
- return -1;
|
|
- *priv = new mutex();
|
|
- return 0;
|
|
-}
|
|
-
|
|
-static int gcry_tunnel_mutex_destroy(void **priv)
|
|
-{
|
|
- if (!priv || !*priv)
|
|
- return -1;
|
|
- delete reinterpret_cast<mutex*>(*priv);
|
|
- return 0;
|
|
-}
|
|
-
|
|
-static int gcry_tunnel_mutex_lock(void **priv)
|
|
-{
|
|
- reinterpret_cast<mutex*>(*priv)->lock();
|
|
- return 0;
|
|
-}
|
|
-
|
|
-static int gcry_tunnel_mutex_unlock(void **priv)
|
|
-{
|
|
- reinterpret_cast<mutex*>(*priv)->unlock();
|
|
- return 0;
|
|
-}
|
|
-
|
|
-static struct gcry_thread_cbs gcry_threads_tunnel =
|
|
-{ GCRY_THREAD_OPTION_USER, NULL,
|
|
- gcry_tunnel_mutex_init, gcry_tunnel_mutex_destroy,
|
|
- gcry_tunnel_mutex_lock, gcry_tunnel_mutex_unlock,
|
|
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL };
|
|
-
|
|
bool Proxy::tls_tunnel_init() {
|
|
- if (gcry_control(GCRYCTL_SET_THREAD_CBS, &tls_tunnel::gcry_threads_tunnel) != 0)
|
|
- return false;
|
|
if (gnutls_global_init() != 0)
|
|
return false;
|
|
return true;
|
|
diff -up abiword-3.0.0/plugins/collab/backends/service/xp/tls_tunnel.h.nogcrypt abiword-3.0.0/plugins/collab/backends/service/xp/tls_tunnel.h
|
|
--- abiword-3.0.0/plugins/collab/backends/service/xp/tls_tunnel.h.nogcrypt 2012-05-25 18:12:56.000000000 +0200
|
|
+++ abiword-3.0.0/plugins/collab/backends/service/xp/tls_tunnel.h 2014-04-22 22:32:49.534292862 +0200
|
|
@@ -40,7 +40,6 @@
|
|
typedef long ssize_t;
|
|
typedef int pid_t;
|
|
#endif
|
|
-#include <gcrypt.h>
|
|
#include <gnutls/gnutls.h>
|
|
#include <gnutls/x509.h>
|
|
|