now builds and runs with GnuTLS-built libcurls too

This commit is contained in:
Daniel Stenberg 2008-02-23 23:00:24 +00:00
parent 6982ed4db7
commit 3154f04fb9
1 changed files with 25 additions and 4 deletions

View File

@ -8,20 +8,26 @@
* $Id$
*
* A multi-threaded example that uses pthreads and fetches 4 remote files at
* once over HTTPS. The lock callbacks and stuff assume OpenSSL so far.
* Should be expanded to do optional GnuTLS style locking.
* once over HTTPS. The lock callbacks and stuff assume OpenSSL or GnuTLS
* (libgcrypt) so far.
*
* OpenSSL docs for this: http://www.openssl.org/docs/crypto/threads.html
* OpenSSL docs for this:
* http://www.openssl.org/docs/crypto/threads.html
* gcrypt docs for this:
* http://gnupg.org/documentation/manuals/gcrypt/Multi_002dThreading.html
*/
#define USE_OPENSSL /* or USE_GNUTLS accordingly */
#include <stdio.h>
#include <pthread.h>
#include <curl/curl.h>
#include <openssl/crypto.h>
/* we have this global to let the callback get easy access to it */
static pthread_mutex_t *lockarray;
#ifdef USE_OPENSSL
#include <openssl/crypto.h>
static void lock_callback(int mode, int type, char *file, int line)
{
(void)file;
@ -66,6 +72,21 @@ static void kill_locks(void)
OPENSSL_free(lockarray);
}
#endif
#ifdef USE_GNUTLS
#include <gcrypt.h>
#include <errno.h>
GCRY_THREAD_OPTION_PTHREAD_IMPL;
void init_locks(void)
{
gcry_control(GCRYCTL_SET_THREAD_CBS);
}
#define kill_locks()
#endif
/* List of URLs to fetch.*/
const char *urls[]= {