diff options
author | Aris Adamantiadis <aris@0xbadc0de.be> | 2010-09-01 16:05:06 +0200 |
---|---|---|
committer | Aris Adamantiadis <aris@0xbadc0de.be> | 2010-09-01 16:05:06 +0200 |
commit | e67d834156a381fe7ef7933d135130083b86d1e3 (patch) | |
tree | e8f3485bc07f19cc2f2bef6ad0ef11af0606984d /libssh/threads.c | |
parent | a93f2d8bfe98e2927fc7024973c52062ccd28b30 (diff) | |
download | libssh-e67d834156a381fe7ef7933d135130083b86d1e3.tar.gz libssh-e67d834156a381fe7ef7933d135130083b86d1e3.tar.xz libssh-e67d834156a381fe7ef7933d135130083b86d1e3.zip |
Fix initialization of threading
Diffstat (limited to 'libssh/threads.c')
-rw-r--r-- | libssh/threads.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/libssh/threads.c b/libssh/threads.c index 63e9d83..087b56c 100644 --- a/libssh/threads.c +++ b/libssh/threads.c @@ -153,6 +153,10 @@ static void libcrypto_thread_finalize(){ */ int ssh_threads_init(void){ + static int threads_initialized=0; + int ret; + if(threads_initialized) + return SSH_OK; /* first initialize the user_callbacks with our default handlers if not * already the case */ @@ -166,11 +170,13 @@ int ssh_threads_init(void){ /* Then initialize the crypto libraries threading callbacks */ #ifdef HAVE_LIBGCRYPT - return libgcrypt_thread_init(); + ret = libgcrypt_thread_init(); #else /* Libcrypto */ - return libcrypto_thread_init(); + ret = libcrypto_thread_init(); #endif - return SSH_ERROR; + if(ret == SSH_OK) + threads_initialized=1; + return ret; } void ssh_threads_finalize(void){ |