Index: src/SSLSocket.m ================================================================== --- src/SSLSocket.m +++ src/SSLSocket.m @@ -24,19 +24,16 @@ #include #include #include -#import -#import - #include #include -#import "SSLSocket.h" -#import "SSLInvalidCertificateException.h" -#import "X509Certificate.h" +#import +#import +#import #import #import #import #import @@ -45,19 +42,29 @@ #import #import #import #import +#import "SSLSocket.h" +#import "SSLInvalidCertificateException.h" +#import "X509Certificate.h" + #ifndef INVALID_SOCKET # define INVALID_SOCKET -1 #endif static SSL_CTX *ctx; static of_mutex_t *ssl_mutexes; + +static unsigned long +get_thread_id(void) +{ + return (unsigned long)(uintptr_t)[OFThread currentThread]; +} static void -ssl_locking_callback(int mode, int n, const char *file, int line) +locking_callback(int mode, int n, const char *file, int line) { /* * This function must handle up to CRYPTO_num_locks() mutexes. * It must set the n-th lock if mode & CRYPTO_LOCK, * release it otherwise. @@ -79,19 +86,19 @@ int m; if (self != [SSLSocket class]) return; - CRYPTO_set_id_callback(&of_thread_current); + CRYPTO_set_id_callback(&get_thread_id); /* Generate number of mutexes needed */ m = CRYPTO_num_locks(); ssl_mutexes = malloc(m * sizeof(of_mutex_t)); for (m--; m >= 0; m--) of_mutex_new(&ssl_mutexes[m]); - CRYPTO_set_locking_callback(&ssl_locking_callback); + CRYPTO_set_locking_callback(&locking_callback); SSL_library_init(); if ((ctx = SSL_CTX_new(SSLv23_method())) == NULL) @throw [OFInitializationFailedException