From 3154f04fb908ddf0066fe1d07cab2bbc0e9e67f4 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Sat, 23 Feb 2008 23:00:24 +0000 Subject: now builds and runs with GnuTLS-built libcurls too --- docs/examples/threaded-ssl.c | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) (limited to 'docs/examples/threaded-ssl.c') diff --git a/docs/examples/threaded-ssl.c b/docs/examples/threaded-ssl.c index e49443d40..c3455369b 100644 --- a/docs/examples/threaded-ssl.c +++ b/docs/examples/threaded-ssl.c @@ -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 #include #include -#include /* we have this global to let the callback get easy access to it */ static pthread_mutex_t *lockarray; +#ifdef USE_OPENSSL +#include 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 +#include + +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[]= { -- cgit v1.2.3