From bf52cef16fd2cc1ad83f760059d27f49f036c3eb Mon Sep 17 00:00:00 2001 From: Dan Fandrich Date: Thu, 3 Apr 2008 20:28:32 +0000 Subject: Made sure that curl_global_init is called in all the multithreaded example programs. --- CHANGES | 4 ++++ docs/examples/curlgtk.c | 7 +++++-- docs/examples/multithread.c | 16 +++++++++++----- docs/examples/smooth-gtk-thread.c | 7 ++++--- docs/examples/threaded-ssl.c | 13 +++++++++---- 5 files changed, 33 insertions(+), 14 deletions(-) diff --git a/CHANGES b/CHANGES index 0ebb5ad71..4a528958f 100644 --- a/CHANGES +++ b/CHANGES @@ -6,6 +6,10 @@ Changelog +Daniel Fandrich (3 Apr 2008) +- Made sure that curl_global_init is called in all the multithreaded + example programs. + Michal Marek (31 Mar 2008) - Removed the generated ca-bundle.h file. The verbatim value of $ca and $capath is known to configure, so it can be defined in config.h instead. diff --git a/docs/examples/curlgtk.c b/docs/examples/curlgtk.c index 37c47f417..19f7b1712 100644 --- a/docs/examples/curlgtk.c +++ b/docs/examples/curlgtk.c @@ -29,7 +29,7 @@ size_t my_read_func(void *ptr, size_t size, size_t nmemb, FILE *stream) return fread(ptr, size, nmemb, stream); } -int my_progress_func(GtkWidget *Bar, +int my_progress_func(GtkWidget *bar, double t, /* dltotal */ double d, /* dlnow */ double ultotal, @@ -37,7 +37,7 @@ int my_progress_func(GtkWidget *Bar, { /* printf("%d / %d (%g %%)\n", d, t, d*100.0/t);*/ gdk_threads_enter(); - gtk_progress_set_value(GTK_PROGRESS(Bar), d*100.0/t); + gtk_progress_set_value(GTK_PROGRESS(bar), d*100.0/t); gdk_threads_leave(); return 0; } @@ -77,6 +77,9 @@ int main(int argc, char **argv) GtkWidget *Window, *Frame, *Frame2; GtkAdjustment *adj; + /* Must initialize libcurl before any threads are started */ + curl_global_init(CURL_GLOBAL_ALL); + /* Init thread */ g_thread_init(NULL); diff --git a/docs/examples/multithread.c b/docs/examples/multithread.c index 78c3a157a..939e9daef 100644 --- a/docs/examples/multithread.c +++ b/docs/examples/multithread.c @@ -15,6 +15,8 @@ #include #include +#define NUMT 4 + /* List of URLs to fetch. @@ -24,14 +26,14 @@ http://www.openssl.org/docs/crypto/threads.html#DESCRIPTION */ -const char *urls[]= { +const char * const urls[NUMT]= { "http://curl.haxx.se/", "ftp://cool.haxx.se/", "http://www.contactor.se/", "www.haxx.se" }; -void *pull_one_url(void *url) +static void *pull_one_url(void *url) { CURL *curl; @@ -52,10 +54,14 @@ void *pull_one_url(void *url) int main(int argc, char **argv) { - pthread_t tid[4]; + pthread_t tid[NUMT]; int i; int error; - for(i=0; i< 4; i++) { + + /* Must initialize libcurl before any threads are started */ + curl_global_init(CURL_GLOBAL_ALL); + + for(i=0; i< NUMT; i++) { error = pthread_create(&tid[i], NULL, /* default attributes please */ pull_one_url, @@ -67,7 +73,7 @@ int main(int argc, char **argv) } /* now wait for all threads to terminate */ - for(i=0; i< 4; i++) { + for(i=0; i< NUMT; i++) { error = pthread_join(tid[i], NULL); fprintf(stderr, "Thread %d terminated\n", i); } diff --git a/docs/examples/smooth-gtk-thread.c b/docs/examples/smooth-gtk-thread.c index 271939cea..2d41aa248 100644 --- a/docs/examples/smooth-gtk-thread.c +++ b/docs/examples/smooth-gtk-thread.c @@ -33,7 +33,7 @@ pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; int j = 0; gint num_urls = 9; /* Just make sure this is less than urls[]*/ -char *urls[]= { +const char * const urls[]= { "90022", "90023", "90024", @@ -58,7 +58,6 @@ void *pull_one_url(void *NaN) CURLcode res; gchar *http; FILE *outfile; - gint i; /* Stop threads from entering unless j is incremented */ pthread_mutex_lock(&lock); @@ -167,7 +166,9 @@ static gboolean cb_delete(GtkWidget *window, gpointer data) int main(int argc, char **argv) { GtkWidget *top_window, *outside_frame, *inside_frame, *progress_bar; - GtkAdjustment *adj; + + /* Must initialize libcurl before any threads are started */ + curl_global_init(CURL_GLOBAL_ALL); /* Init thread */ g_thread_init(NULL); diff --git a/docs/examples/threaded-ssl.c b/docs/examples/threaded-ssl.c index c3455369b..afc609551 100644 --- a/docs/examples/threaded-ssl.c +++ b/docs/examples/threaded-ssl.c @@ -23,6 +23,8 @@ #include #include +#define NUMT 4 + /* we have this global to let the callback get easy access to it */ static pthread_mutex_t *lockarray; @@ -89,7 +91,7 @@ void init_locks(void) #endif /* List of URLs to fetch.*/ -const char *urls[]= { +const char * const urls[]= { "https://www.sf.net/", "https://www.openssl.org/", "https://www.sf.net/", @@ -114,15 +116,18 @@ static void *pull_one_url(void *url) int main(int argc, char **argv) { - pthread_t tid[4]; + pthread_t tid[NUMT]; int i; int error; (void)argc; /* we don't use any arguments in this example */ (void)argv; + /* Must initialize libcurl before any threads are started */ + curl_global_init(CURL_GLOBAL_ALL); + init_locks(); - for(i=0; i< 4; i++) { + for(i=0; i< NUMT; i++) { error = pthread_create(&tid[i], NULL, /* default attributes please */ pull_one_url, @@ -134,7 +139,7 @@ int main(int argc, char **argv) } /* now wait for all threads to terminate */ - for(i=0; i< 4; i++) { + for(i=0; i< NUMT; i++) { error = pthread_join(tid[i], NULL); fprintf(stderr, "Thread %d terminated\n", i); } -- cgit v1.2.3