]> granicus.if.org Git - curl/commitdiff
Made sure that curl_global_init is called in all the multithreaded
authorDan Fandrich <dan@coneharvesters.com>
Thu, 3 Apr 2008 20:28:32 +0000 (20:28 +0000)
committerDan Fandrich <dan@coneharvesters.com>
Thu, 3 Apr 2008 20:28:32 +0000 (20:28 +0000)
example programs.

CHANGES
docs/examples/curlgtk.c
docs/examples/multithread.c
docs/examples/smooth-gtk-thread.c
docs/examples/threaded-ssl.c

diff --git a/CHANGES b/CHANGES
index 0ebb5ad714b3fad6b14b6d2cbcc91f293c810b83..4a528958f923fc35d55201f6b4384d239f0d6ec6 100644 (file)
--- 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.
index 37c47f417dc742db6104f1584f1aa751fea89b42..19f7b1712afaf5e054ffb5755fe769e1a12d8222 100644 (file)
@@ -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);
 
index 78c3a157af69434612d15c6e2f06b5556b743cb3..939e9daefb66fbe07a8e4e8bbcf7ace03e9f9767 100644 (file)
@@ -15,6 +15,8 @@
 #include <pthread.h>
 #include <curl/curl.h>
 
+#define NUMT 4
+
 /*
   List of URLs to fetch.
 
   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);
   }
index 271939ceafb142cdda37360f86aa6b043a8bad6a..2d41aa248665a76c4f6b5bc148763a7d4398d142 100644 (file)
@@ -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);
index c3455369b616c38b25161590989ccfbf078ffe9e..afc60955141ce2a4003f83341d025c021de7d7ec 100644 (file)
@@ -23,6 +23,8 @@
 #include <pthread.h>
 #include <curl/curl.h>
 
+#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);
   }