Commit 6a87ac8c authored by Yang Tse's avatar Yang Tse
Browse files

polarssl threadlock cleanup

parent 79f1bf32
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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		\
  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		\
  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		\
  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		\
@@ -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	\
  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	\
  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	\
  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		\
+8 −14
Original line number Diff line number Diff line
@@ -5,8 +5,8 @@
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2010, 2011, Hoi-Ho Chan, <hoiho.chan@gmail.com>
 * Copyright (C) 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
 * Copyright (C) 2010 - 2011, Hoi-Ho Chan, <hoiho.chan@gmail.com>
 * Copyright (C) 2012 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
@@ -66,12 +66,7 @@
#include "connect.h" /* for the connect timeout */
#include "select.h"
#include "rawstr.h"

/* apply threading? */
#if defined(USE_THREADS_POSIX) || defined(USE_THREADS_WIN32)
#define THREADING_SUPPORT
#include "polarsslthreadlock.h"
#endif /* USE_THREADS_POSIX || USE_THREADS_WIN32 */

#define _MPRINTF_REPLACE /* use our functions only */
#include <curl/mprintf.h>
@@ -79,6 +74,11 @@
/* The last #include file should be: */
#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
static entropy_context entropy;

@@ -695,18 +695,12 @@ Curl_polarssl_connect(struct connectdata *conn,
 */
int polarssl_init(void)
{
#ifdef THREADING_SUPPORT
  return polarsslthreadlock_thread_setup();
#else /* THREADING_SUPPORT */
  return 1;
#endif /* THREADING_SUPPORT */
}

void polarssl_cleanup(void)
{
#ifdef THREADING_SUPPORT
  polarsslthreadlock_thread_cleanup();
#endif /* THREADING_SUPPORT */
  (void)polarsslthreadlock_thread_cleanup();
}

#endif /* USE_POLARSSL */
+14 −15
Original line number Diff line number Diff line
@@ -6,7 +6,7 @@
 *                             \___|\___/|_| \_\_____|
 *
 * 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
 * you should have received as part of this distribution. The terms
@@ -20,8 +20,6 @@
 * KIND, either express or implied.
 *
 ***************************************************************************/

#include <stdio.h>
#include "curl_setup.h"

#if defined(USE_POLARSSL) && \
@@ -30,16 +28,17 @@
#if defined(USE_THREADS_POSIX)
#  ifdef HAVE_PTHREAD_H
#    include <pthread.h>
#define MUTEX_TYPE       pthread_mutex_t
#endif /* HAVE_PTHREAD_H */
#  endif
#elif defined(USE_THREADS_WIN32)
#  ifdef HAVE_PROCESS_H
#    include <process.h>
#define MUTEX_TYPE       HANDLE
#endif /* HAVE_PROCESS_H */
#endif /* USE_THREADS_POSIX */
#  endif
#endif

#include "polarssl_threadlock.h"

#include "polarsslthreadlock.h"
#define _MPRINTF_REPLACE /* use our functions only */
#include <curl/mprintf.h>

#include "curl_memory.h"
/* The last #include file should be: */
@@ -49,14 +48,14 @@
#define NUMT                    2

/* 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 i;
  int ret;

  mutex_buf = malloc(NUMT * sizeof(MUTEX_TYPE));
  mutex_buf = malloc(NUMT * sizeof(POLARSSL_MUTEX_T));
  if(!mutex_buf)
    return 0;     /* error, no number of threads defined */

+22 −3
Original line number Diff line number Diff line
#ifndef HEADER_CURL_POLARSSLTHREADLOCK_H
#define HEADER_CURL_POLARSSLTHREADLOCK_H
#ifndef HEADER_CURL_POLARSSL_THREADLOCK_H
#define HEADER_CURL_POLARSSL_THREADLOCK_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
@@ -8,6 +8,7 @@
 *                             \___|\___/|_| \_\_____|
 *
 * 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
 * you should have received as part of this distribution. The terms
@@ -25,10 +26,28 @@

#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_cleanup(void);
int polarsslthreadlock_lock_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 /* HEADER_CURL_POLARSSLTHREADLOCK_H */

#endif /* HEADER_CURL_POLARSSL_THREADLOCK_H */