summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/idevice.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/idevice.c b/src/idevice.c
index 745d784..8c81576 100644
--- a/src/idevice.c
+++ b/src/idevice.c
@@ -79,12 +79,19 @@ static void locking_function(int mode, int n, const char* file, int line)
79 mutex_unlock(&mutex_buf[n]); 79 mutex_unlock(&mutex_buf[n]);
80} 80}
81 81
82#if OPENSSL_VERSION_NUMBER < 0x10000000L
82static unsigned long id_function(void) 83static unsigned long id_function(void)
83{ 84{
84 return ((unsigned long)THREAD_ID); 85 return ((unsigned long)THREAD_ID);
85} 86}
87#else
88static void id_function(CRYPTO_THREADID *thread)
89{
90 CRYPTO_THREADID_set_numeric(thread, (unsigned long)THREAD_ID);
91}
86#endif 92#endif
87#endif 93#endif
94#endif /* HAVE_OPENSSL */
88 95
89static void internal_idevice_init(void) 96static void internal_idevice_init(void)
90{ 97{
@@ -99,7 +106,11 @@ static void internal_idevice_init(void)
99 for (i = 0; i < CRYPTO_num_locks(); i++) 106 for (i = 0; i < CRYPTO_num_locks(); i++)
100 mutex_init(&mutex_buf[i]); 107 mutex_init(&mutex_buf[i]);
101 108
109#if OPENSSL_VERSION_NUMBER < 0x10000000L
102 CRYPTO_set_id_callback(id_function); 110 CRYPTO_set_id_callback(id_function);
111#else
112 CRYPTO_THREADID_set_callback(id_function);
113#endif
103 CRYPTO_set_locking_callback(locking_function); 114 CRYPTO_set_locking_callback(locking_function);
104#endif 115#endif
105#else 116#else
@@ -113,7 +124,11 @@ static void internal_idevice_deinit(void)
113#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) 124#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
114 int i; 125 int i;
115 if (mutex_buf) { 126 if (mutex_buf) {
127#if OPENSSL_VERSION_NUMBER < 0x10000000L
116 CRYPTO_set_id_callback(NULL); 128 CRYPTO_set_id_callback(NULL);
129#else
130 CRYPTO_THREADID_set_callback(NULL);
131#endif
117 CRYPTO_set_locking_callback(NULL); 132 CRYPTO_set_locking_callback(NULL);
118 for (i = 0; i < CRYPTO_num_locks(); i++) 133 for (i = 0; i < CRYPTO_num_locks(); i++)
119 mutex_destroy(&mutex_buf[i]); 134 mutex_destroy(&mutex_buf[i]);