polarssl threadlock cleanup

This commit is contained in:
Yang Tse 2013-02-19 13:11:55 +01:00
parent 79f1bf32d0
commit 6a87ac8c88
4 changed files with 46 additions and 34 deletions

View File

@ -20,7 +20,7 @@ CSOURCES = file.c timeval.c base64.c hostip.c progress.c formdata.c \
qssl.c rawstr.c curl_addrinfo.c socks_gssapi.c socks_sspi.c \ qssl.c rawstr.c curl_addrinfo.c socks_gssapi.c socks_sspi.c \
curl_sspi.c slist.c nonblock.c curl_memrchr.c imap.c pop3.c smtp.c \ curl_sspi.c slist.c nonblock.c curl_memrchr.c imap.c pop3.c smtp.c \
pingpong.c rtsp.c curl_threads.c warnless.c hmac.c polarssl.c \ pingpong.c rtsp.c curl_threads.c warnless.c hmac.c polarssl.c \
polarsslthreadlock.c curl_rtmp.c openldap.c curl_gethostname.c \ polarssl_threadlock.c curl_rtmp.c openldap.c curl_gethostname.c \
gopher.c axtls.c idn_win32.c http_negotiate_sspi.c cyassl.c \ gopher.c axtls.c idn_win32.c http_negotiate_sspi.c cyassl.c \
http_proxy.c non-ascii.c asyn-ares.c asyn-thread.c curl_gssapi.c \ http_proxy.c non-ascii.c asyn-ares.c asyn-thread.c curl_gssapi.c \
curl_ntlm.c curl_ntlm_wb.c curl_ntlm_core.c curl_ntlm_msgs.c \ curl_ntlm.c curl_ntlm_wb.c curl_ntlm_core.c curl_ntlm_msgs.c \
@ -39,7 +39,7 @@ HHEADERS = arpa_telnet.h netrc.h file.h timeval.h qssl.h hostip.h \
tftp.h sockaddr.h splay.h strdup.h socks.h ssh.h nssg.h curl_base64.h \ tftp.h sockaddr.h splay.h strdup.h socks.h ssh.h nssg.h curl_base64.h \
rawstr.h curl_addrinfo.h curl_sspi.h slist.h nonblock.h \ rawstr.h curl_addrinfo.h curl_sspi.h slist.h nonblock.h \
curl_memrchr.h imap.h pop3.h smtp.h pingpong.h rtsp.h curl_threads.h \ curl_memrchr.h imap.h pop3.h smtp.h pingpong.h rtsp.h curl_threads.h \
warnless.h curl_hmac.h polarssl.h polarsslthreadlock.h curl_rtmp.h \ warnless.h curl_hmac.h polarssl.h polarssl_threadlock.h curl_rtmp.h \
curl_gethostname.h gopher.h axtls.h cyassl.h http_proxy.h non-ascii.h \ curl_gethostname.h gopher.h axtls.h cyassl.h http_proxy.h non-ascii.h \
asyn.h curl_ntlm.h curl_gssapi.h curl_ntlm_wb.h curl_ntlm_core.h \ asyn.h curl_ntlm.h curl_gssapi.h curl_ntlm_wb.h curl_ntlm_core.h \
curl_ntlm_msgs.h curl_sasl.h curl_schannel.h curl_multibyte.h \ curl_ntlm_msgs.h curl_sasl.h curl_schannel.h curl_multibyte.h \

View File

@ -5,8 +5,8 @@
* | (__| |_| | _ <| |___ * | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____| * \___|\___/|_| \_\_____|
* *
* Copyright (C) 2010, 2011, Hoi-Ho Chan, <hoiho.chan@gmail.com> * Copyright (C) 2010 - 2011, Hoi-Ho Chan, <hoiho.chan@gmail.com>
* Copyright (C) 2012, Daniel Stenberg, <daniel@haxx.se>, et al. * Copyright (C) 2012 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
* *
* This software is licensed as described in the file COPYING, which * This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms * you should have received as part of this distribution. The terms
@ -66,12 +66,7 @@
#include "connect.h" /* for the connect timeout */ #include "connect.h" /* for the connect timeout */
#include "select.h" #include "select.h"
#include "rawstr.h" #include "rawstr.h"
/* apply threading? */
#if defined(USE_THREADS_POSIX) || defined(USE_THREADS_WIN32)
#define THREADING_SUPPORT
#include "polarsslthreadlock.h" #include "polarsslthreadlock.h"
#endif /* USE_THREADS_POSIX || USE_THREADS_WIN32 */
#define _MPRINTF_REPLACE /* use our functions only */ #define _MPRINTF_REPLACE /* use our functions only */
#include <curl/mprintf.h> #include <curl/mprintf.h>
@ -79,6 +74,11 @@
/* The last #include file should be: */ /* The last #include file should be: */
#include "memdebug.h" #include "memdebug.h"
/* apply threading? */
#if defined(USE_THREADS_POSIX) || defined(USE_THREADS_WIN32)
#define THREADING_SUPPORT
#endif
#if defined(THREADING_SUPPORT) && POLARSSL_VERSION_NUMBER>0x01010000 #if defined(THREADING_SUPPORT) && POLARSSL_VERSION_NUMBER>0x01010000
static entropy_context entropy; static entropy_context entropy;
@ -695,18 +695,12 @@ Curl_polarssl_connect(struct connectdata *conn,
*/ */
int polarssl_init(void) int polarssl_init(void)
{ {
#ifdef THREADING_SUPPORT
return polarsslthreadlock_thread_setup(); return polarsslthreadlock_thread_setup();
#else /* THREADING_SUPPORT */
return 1;
#endif /* THREADING_SUPPORT */
} }
void polarssl_cleanup(void) void polarssl_cleanup(void)
{ {
#ifdef THREADING_SUPPORT (void)polarsslthreadlock_thread_cleanup();
polarsslthreadlock_thread_cleanup();
#endif /* THREADING_SUPPORT */
} }
#endif /* USE_POLARSSL */ #endif /* USE_POLARSSL */

29
lib/polarsslthreadlock.c → lib/polarssl_threadlock.c Executable file → Normal file
View File

@ -6,7 +6,7 @@
* \___|\___/|_| \_\_____| * \___|\___/|_| \_\_____|
* *
* Copyright (C) 2010, 2011, Hoi-Ho Chan, <hoiho.chan@gmail.com> * Copyright (C) 2010, 2011, Hoi-Ho Chan, <hoiho.chan@gmail.com>
* Copyright (C) 2012, Daniel Stenberg, <daniel@haxx.se>, et al. * Copyright (C) 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
* *
* This software is licensed as described in the file COPYING, which * This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms * you should have received as part of this distribution. The terms
@ -20,26 +20,25 @@
* KIND, either express or implied. * KIND, either express or implied.
* *
***************************************************************************/ ***************************************************************************/
#include <stdio.h>
#include "curl_setup.h" #include "curl_setup.h"
#if defined(USE_POLARSSL) && \ #if defined(USE_POLARSSL) && \
(defined(USE_THREADS_POSIX) || defined(USE_THREADS_WIN32)) (defined(USE_THREADS_POSIX) || defined(USE_THREADS_WIN32))
#if defined(USE_THREADS_POSIX) #if defined(USE_THREADS_POSIX)
#ifdef HAVE_PTHREAD_H # ifdef HAVE_PTHREAD_H
#include <pthread.h> # include <pthread.h>
#define MUTEX_TYPE pthread_mutex_t # endif
#endif /* HAVE_PTHREAD_H */
#elif defined(USE_THREADS_WIN32) #elif defined(USE_THREADS_WIN32)
#ifdef HAVE_PROCESS_H # ifdef HAVE_PROCESS_H
#include <process.h> # include <process.h>
#define MUTEX_TYPE HANDLE # endif
#endif /* HAVE_PROCESS_H */ #endif
#endif /* USE_THREADS_POSIX */
#include "polarsslthreadlock.h" #include "polarssl_threadlock.h"
#define _MPRINTF_REPLACE /* use our functions only */
#include <curl/mprintf.h>
#include "curl_memory.h" #include "curl_memory.h"
/* The last #include file should be: */ /* The last #include file should be: */
@ -49,14 +48,14 @@
#define NUMT 2 #define NUMT 2
/* This array will store all of the mutexes available to PolarSSL. */ /* This array will store all of the mutexes available to PolarSSL. */
static MUTEX_TYPE *mutex_buf = NULL; static POLARSSL_MUTEX_T *mutex_buf = NULL;
int polarsslthreadlock_thread_setup(void) int polarsslthreadlock_thread_setup(void)
{ {
int i; int i;
int ret; int ret;
mutex_buf = malloc(NUMT * sizeof(MUTEX_TYPE)); mutex_buf = malloc(NUMT * sizeof(POLARSSL_MUTEX_T));
if(!mutex_buf) if(!mutex_buf)
return 0; /* error, no number of threads defined */ return 0; /* error, no number of threads defined */

25
lib/polarsslthreadlock.h → lib/polarssl_threadlock.h Executable file → Normal file
View File

@ -1,5 +1,5 @@
#ifndef HEADER_CURL_POLARSSLTHREADLOCK_H #ifndef HEADER_CURL_POLARSSL_THREADLOCK_H
#define HEADER_CURL_POLARSSLTHREADLOCK_H #define HEADER_CURL_POLARSSL_THREADLOCK_H
/*************************************************************************** /***************************************************************************
* _ _ ____ _ * _ _ ____ _
* Project ___| | | | _ \| | * Project ___| | | | _ \| |
@ -8,6 +8,7 @@
* \___|\___/|_| \_\_____| * \___|\___/|_| \_\_____|
* *
* Copyright (C) 2010, Hoi-Ho Chan, <hoiho.chan@gmail.com> * Copyright (C) 2010, Hoi-Ho Chan, <hoiho.chan@gmail.com>
* Copyright (C) 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
* *
* This software is licensed as described in the file COPYING, which * This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms * you should have received as part of this distribution. The terms
@ -25,10 +26,28 @@
#ifdef USE_POLARSSL #ifdef USE_POLARSSL
#if defined(USE_THREADS_POSIX)
# define POLARSSL_MUTEX_T pthread_mutex_t
#elif defined(USE_THREADS_WIN32)
# define POLARSSL_MUTEX_T HANDLE
#endif
#if defined(USE_THREADS_POSIX) || defined(USE_THREADS_WIN32)
int polarsslthreadlock_thread_setup(void); int polarsslthreadlock_thread_setup(void);
int polarsslthreadlock_thread_cleanup(void); int polarsslthreadlock_thread_cleanup(void);
int polarsslthreadlock_lock_function(int n); int polarsslthreadlock_lock_function(int n);
int polarsslthreadlock_unlock_function(int n); int polarsslthreadlock_unlock_function(int n);
#else
#define polarsslthreadlock_thread_setup() 1
#define polarsslthreadlock_thread_cleanup() 1
#define polarsslthreadlock_lock_function(x) 1
#define polarsslthreadlock_unlock_function(x) 1
#endif /* USE_THREADS_POSIX || USE_THREADS_WIN32 */
#endif /* USE_POLARSSL */ #endif /* USE_POLARSSL */
#endif /* HEADER_CURL_POLARSSLTHREADLOCK_H */
#endif /* HEADER_CURL_POLARSSL_THREADLOCK_H */