Fixed multithreading issue with gnutls.

This commit is contained in:
lotodore
2008-04-24 22:11:43 +00:00
parent 873b626c5f
commit dd3453d364
9 changed files with 73 additions and 15 deletions
+4 -4
View File
@@ -271,7 +271,7 @@ win32{
LIBPATH += Release/lib ../SDL/VisualC/SDL/Release ../SDL/VisualC/SDLmain/Release ../SDL_mixer/VisualC/Release LIBPATH += Release/lib ../SDL/VisualC/SDL/Release ../SDL/VisualC/SDLmain/Release ../SDL_mixer/VisualC/Release
#LIBPATH += Debug/lib ../SDL/VisualC/SDL/Debug ../SDL/VisualC/SDLmain/Debug ../SDL_mixer/VisualC/Debug #LIBPATH += Debug/lib ../SDL/VisualC/SDL/Debug ../SDL/VisualC/SDLmain/Debug ../SDL_mixer/VisualC/Debug
LIBS += -llibgnutls-openssl LIBS += -llibgnutls-openssl -llibgcrypt
LIBS += -llibcurl LIBS += -llibcurl
} }
@@ -279,7 +279,7 @@ win32{
LIBPATH += Release/lib LIBPATH += Release/lib
#LIBPATH += Debug/lib #LIBPATH += Debug/lib
LIBPATH += ../SDL/lib ../SDL_mixer/lib LIBPATH += ../SDL/lib ../SDL_mixer/lib
LIBS += -lgnutls-openssl LIBS += -lgnutls-openssl -lgcrypt
LIBS += -lcurl LIBS += -lcurl
LIBS += -lz LIBS += -lz
LIBS += -llibboost_thread-mgw34-mt-1_35 LIBS += -llibboost_thread-mgw34-mt-1_35
@@ -344,7 +344,7 @@ unix: !mac{
LIBS += -lpokerth_lib LIBS += -lpokerth_lib
LIBS += $$BOOST_LIBS LIBS += $$BOOST_LIBS
LIBS += -lgnutls-openssl -lSDL_mixer -lcurl -lz LIBS += -lgnutls-openssl -lgcrypt -lSDL_mixer -lcurl -lz
TARGETDEPS += ./lib/libpokerth_lib.a TARGETDEPS += ./lib/libpokerth_lib.a
## My release static libs ## My release static libs
@@ -393,7 +393,7 @@ mac{
LIBS += /usr/local/lib/libboost_thread-mt-1_34_1.a LIBS += /usr/local/lib/libboost_thread-mt-1_34_1.a
LIBS += /usr/local/lib/libboost_filesystem-mt-1_34_1.a LIBS += /usr/local/lib/libboost_filesystem-mt-1_34_1.a
# libraries installed on every mac # libraries installed on every mac
LIBS += -lcrypto -lz -lcurl -framework Carbon LIBS += -lgnutls-openssl -lgcrypt -lz -lcurl -framework Carbon
# set the application icon # set the application icon
RC_FILE = pokerth.icns RC_FILE = pokerth.icns
LIBPATH += /Developer/SDKs/MacOSX10.4u.sdk/usr/lib LIBPATH += /Developer/SDKs/MacOSX10.4u.sdk/usr/lib
+4 -4
View File
@@ -126,12 +126,12 @@ win32 {
LIBS += -lpokerth_lib LIBS += -lpokerth_lib
win32-msvc2005{ win32-msvc2005{
LIBS += -llibgnutls-openssl LIBS += -llibgnutls-openssl -llibgcrypt
LIBS += -llibcurl LIBS += -llibcurl
} }
win32-g++{ win32-g++{
LIBS += -lgnutls-openssl LIBS += -lgnutls-openssl -lgcrypt
LIBS += -lcurl LIBS += -lcurl
LIBS += -llibboost_thread-mgw34-mt-1_35 LIBS += -llibboost_thread-mgw34-mt-1_35
LIBS += -llibboost_filesystem-mgw34-mt-1_35 LIBS += -llibboost_filesystem-mgw34-mt-1_35
@@ -198,7 +198,7 @@ unix : !mac {
LIBS += -lpokerth_lib LIBS += -lpokerth_lib
LIBS += $$BOOST_LIBS LIBS += $$BOOST_LIBS
LIBS += -lgnutls-openssl -lcurl LIBS += -lgnutls-openssl -lgcrypt -lcurl
TARGETDEPS += ./lib/libpokerth_lib.a TARGETDEPS += ./lib/libpokerth_lib.a
@@ -228,7 +228,7 @@ mac{
LIBS += /usr/local/lib/libboost_filesystem-mt-1_34_1.a LIBS += /usr/local/lib/libboost_filesystem-mt-1_34_1.a
LIBS += /usr/local/lib/libboost_program_options-mt-1_34_1.a LIBS += /usr/local/lib/libboost_program_options-mt-1_34_1.a
# libraries installed on every mac # libraries installed on every mac
LIBS += -lgnutls-openssl -liconv LIBS += -lgnutls-openssl -lgcrypt -liconv
# set the application icon # set the application icon
RC_FILE = pokerth.icns RC_FILE = pokerth.icns
LIBPATH += /Developer/SDKs/MacOSX10.4u.sdk/usr/lib LIBPATH += /Developer/SDKs/MacOSX10.4u.sdk/usr/lib
+7 -2
View File
@@ -24,8 +24,13 @@
#ifndef HAVE_SSIZE_T #ifndef HAVE_SSIZE_T
# define HAVE_SSIZE_T # define HAVE_SSIZE_T
#include <sys/types.h> #include <sys/types.h>
#if (defined _WIN32) && (!defined ssize_t) #ifdef _WIN32
typedef long ssize_t; // This is only for Windows. Supports only Win32. #ifndef ssize_t
typedef long ssize_t; // This is only for Windows. Supports only Win32.
#endif
#ifndef pid_t
typedef unsigned pid_t;
#endif
#endif #endif
#endif #endif
+1 -1
View File
@@ -36,7 +36,7 @@
using namespace std; using namespace std;
//#define SERVER_TEST #define SERVER_TEST
#define SERVER_START_GAME_TIMEOUT_SEC 10 #define SERVER_START_GAME_TIMEOUT_SEC 10
+46
View File
@@ -19,6 +19,52 @@
#include <net/socket_startup.h> #include <net/socket_startup.h>
#include <net/socket_helper.h> #include <net/socket_helper.h>
#include <core/openssl_wrapper.h>
#include <gcrypt.h>
#include <boost/thread.hpp>
extern "C" {
int gcry_bthread_init()
{
return 0;
}
int gcry_bmutex_init(void **obj) {
*obj = (void*)(new boost::mutex);
return 0;
}
int gcry_bmutex_destroy(void **obj) {
delete (boost::mutex *)(*obj);
return 0;
}
int gcry_bmutex_lock(void **obj) {
((boost::mutex *)(*obj))->lock();
return 0;
}
int gcry_bmutex_unlock(void **obj) {
((boost::mutex *)(*obj))->unlock();
return 0;
}
struct gcry_thread_cbs gcry_threads_boost =
{
GCRY_THREAD_OPTION_USER, gcry_bthread_init, gcry_bmutex_init,
gcry_bmutex_destroy, gcry_bmutex_lock, gcry_bmutex_unlock,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL
};
}
bool
internal_socket_startup()
{
gcry_control(GCRYCTL_SET_THREAD_CBS, &gcry_threads_boost);
return SSL_library_init() == 1;
}
void
internal_socket_cleanup()
{
}
bool bool
+2 -1
View File
@@ -32,11 +32,12 @@ using namespace std;
bool bool
socket_startup() socket_startup()
{ {
return true; return internal_socket_startup();
} }
void void
socket_cleanup() socket_cleanup()
{ {
internal_socket_cleanup();
} }
+5
View File
@@ -27,5 +27,10 @@ bool socket_has_sctp();
bool socket_has_ipv6(); bool socket_has_ipv6();
bool socket_has_dual_stack(); bool socket_has_dual_stack();
/* Internal common functions. */
bool internal_socket_startup();
void internal_socket_cleanup();
#endif #endif
+2 -1
View File
@@ -57,12 +57,13 @@ socket_startup()
} }
/* The WinSock DLL is acceptable. Proceed. */ /* The WinSock DLL is acceptable. Proceed. */
return true; return internal_socket_startup();
} }
void void
socket_cleanup() socket_cleanup()
{ {
internal_socket_cleanup();
WSACleanup(); WSACleanup();
} }
+2 -2
View File
@@ -75,8 +75,8 @@ int main( int argc, char **argv )
//_CrtSetBreakAlloc(49937); //_CrtSetBreakAlloc(49937);
socket_startup(); socket_startup();
curl_global_init(CURL_GLOBAL_ALL); curl_global_init(CURL_GLOBAL_NOTHING);
/////// can be removed for non-qt-guis //////////// /////// can be removed for non-qt-guis ////////////
QApplication a( argc, argv ); QApplication a( argc, argv );