]> granicus.if.org Git - curl/commitdiff
Use curl_global_init() and curl_global_cleanup().
authorYang Tse <yangsita@gmail.com>
Wed, 25 Oct 2006 05:59:46 +0000 (05:59 +0000)
committerYang Tse <yangsita@gmail.com>
Wed, 25 Oct 2006 05:59:46 +0000 (05:59 +0000)
Improve cleanup in case of initialization failure.

29 files changed:
tests/libtest/lib500.c
tests/libtest/lib501.c
tests/libtest/lib502.c
tests/libtest/lib503.c
tests/libtest/lib504.c
tests/libtest/lib505.c
tests/libtest/lib506.c
tests/libtest/lib507.c
tests/libtest/lib508.c
tests/libtest/lib509.c
tests/libtest/lib510.c
tests/libtest/lib511.c
tests/libtest/lib512.c
tests/libtest/lib513.c
tests/libtest/lib514.c
tests/libtest/lib515.c
tests/libtest/lib516.c
tests/libtest/lib518.c
tests/libtest/lib519.c
tests/libtest/lib520.c
tests/libtest/lib521.c
tests/libtest/lib523.c
tests/libtest/lib524.c
tests/libtest/lib525.c
tests/libtest/lib526.c
tests/libtest/lib530.c
tests/libtest/lib533.c
tests/libtest/lib536.c
tests/libtest/test.h

index 5943b584993b2d3b8537e370261b81bc94682ca7..bd4b077d13b35664e0287f727bf48987a2f6d79e 100644 (file)
@@ -3,11 +3,27 @@
 int test(char *URL)
 {
   CURLcode res;
-  CURL *curl = curl_easy_init();
+  CURL *curl;
+
+  if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
+    fprintf(stderr, "curl_global_init() failed\n");
+    return TEST_ERR_MAJOR_BAD;
+  }
+
+  if ((curl = curl_easy_init()) == NULL) {
+    fprintf(stderr, "curl_easy_init() failed\n");
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
+
   curl_easy_setopt(curl, CURLOPT_URL, URL);
   curl_easy_setopt(curl, CURLOPT_HEADER, TRUE);
+
   res = curl_easy_perform(curl);
+
   curl_easy_cleanup(curl);  
+  curl_global_cleanup();
+
   return (int)res;
 }
 
index b0ff0a73152b0d93ef9097aafb026af039a30669..c7cf395a90e54c78c31c3ebe218bf881fe63f80e 100644 (file)
@@ -3,12 +3,28 @@
 int test(char *URL)
 {
   CURLcode res;
-  CURL *curl = curl_easy_init();
+  CURL *curl;
 
   (void)URL; /* we don't use this */
+
+  if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
+    fprintf(stderr, "curl_global_init() failed\n");
+    return TEST_ERR_MAJOR_BAD;
+  }
+
+  if ((curl = curl_easy_init()) == NULL) {
+    fprintf(stderr, "curl_easy_init() failed\n");
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
+
   curl_easy_setopt(curl, CURLOPT_HEADER, TRUE);
+
   res = curl_easy_perform(curl);
+
   curl_easy_cleanup(curl);
-  return res;
+  curl_global_cleanup();
+
+  return (int)res;
 }
 
index 0a852c9989e7b3f2de47eba62a20e368cf8e3fad..362e0225a96261f494477e02d85c44e7813ef28b 100644 (file)
@@ -1,5 +1,9 @@
 #include "test.h"
 
+#include "timeval.h"
+
+#define MULTI_PERFORM_HANG_TIMEOUT 30 * 1000
+
 /*
  * Get a single URL without select().
  */
@@ -8,25 +12,67 @@ int test(char *URL)
 {
   CURL *c;
   CURLM *m;
-  CURLMcode res;
+  int res = 0;
   int running=1;
+  struct timeval mp_start;
+  char mp_timedout = FALSE;
+
+  if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
+    fprintf(stderr, "curl_global_init() failed\n");
+    return TEST_ERR_MAJOR_BAD;
+  }
+
+  if ((c = curl_easy_init()) == NULL) {
+    fprintf(stderr, "curl_easy_init() failed\n");
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
 
-  curl_global_init(CURL_GLOBAL_ALL);
-  c = curl_easy_init();
   curl_easy_setopt(c, CURLOPT_URL, URL);
-  m = curl_multi_init();
 
-  res = curl_multi_add_handle(m, c);
+  if ((m = curl_multi_init()) == NULL) {
+    fprintf(stderr, "curl_multi_init() failed\n");
+    curl_easy_cleanup(c);
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
+
+  if ((res = (int)curl_multi_add_handle(m, c)) != CURLM_OK) {
+    fprintf(stderr, "curl_multi_add_handle() failed, "
+            "with code %d\n", res);
+    curl_multi_cleanup(m);
+    curl_easy_cleanup(c);
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
+
+  mp_timedout = FALSE;
+  mp_start = curlx_tvnow();
+
   while (running) {
-    res = curl_multi_perform(m, &running);
+    res = (int)curl_multi_perform(m, &running);
+    if (curlx_tvdiff(curlx_tvnow(), mp_start) > 
+        MULTI_PERFORM_HANG_TIMEOUT) {
+      mp_timedout = TRUE;
+      break;
+    }
     if (running <= 0) {
       fprintf(stderr, "nothing left running.\n");
       break;
     }
   }
+
+  if (mp_timedout) {
+    if (mp_timedout) fprintf(stderr, "mp_timedout\n");
+    fprintf(stderr, "ABORTING TEST, since it seems "
+            "that it would have run forever.\n");
+    res = TEST_ERR_RUNS_FOREVER;
+  }
+
   curl_multi_remove_handle(m, c);
   curl_easy_cleanup(c);
   curl_multi_cleanup(m);
+  curl_global_cleanup();
 
   return res;
 }
index e4077a932471391269d285536ebbbf9bd6ee4a19..057625c96e360895f7e14809937c4fc30592e610 100644 (file)
@@ -28,8 +28,17 @@ int test(char *URL)
   char ml_timedout = FALSE;
   char mp_timedout = FALSE;
 
-  curl_global_init(CURL_GLOBAL_ALL);
-  c = curl_easy_init();
+  if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
+    fprintf(stderr, "curl_global_init() failed\n");
+    return TEST_ERR_MAJOR_BAD;
+  }
+
+  if ((c = curl_easy_init()) == NULL) {
+    fprintf(stderr, "curl_easy_init() failed\n");
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
+
   curl_easy_setopt(c, CURLOPT_PROXY, arg2); /* set in first.c */
   curl_easy_setopt(c, CURLOPT_URL, URL);
   curl_easy_setopt(c, CURLOPT_USERPWD, "test:ing");
@@ -37,10 +46,21 @@ int test(char *URL)
   curl_easy_setopt(c, CURLOPT_HTTPPROXYTUNNEL, 1);
   curl_easy_setopt(c, CURLOPT_HEADER, 1);
 
+  if ((m = curl_multi_init()) == NULL) {
+    fprintf(stderr, "curl_multi_init() failed\n");
+    curl_easy_cleanup(c);
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
 
-  m = curl_multi_init();
-
-  res = (int)curl_multi_add_handle(m, c);
+  if ((res = (int)curl_multi_add_handle(m, c)) != CURLM_OK) {
+    fprintf(stderr, "curl_multi_add_handle() failed, "
+            "with code %d\n", res);
+    curl_multi_cleanup(m);
+    curl_easy_cleanup(c);
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
 
   ml_timedout = FALSE;
   ml_start = curlx_tvnow();
@@ -106,14 +126,14 @@ int test(char *URL)
     if (mp_timedout) fprintf(stderr, "mp_timedout\n");
     fprintf(stderr, "ABORTING TEST, since it seems "
             "that it would have run forever.\n");
-    res = 77;
+    res = TEST_ERR_RUNS_FOREVER;
   }
 
   curl_multi_remove_handle(m, c);
   curl_easy_cleanup(c);
   curl_multi_cleanup(m);
-
   curl_global_cleanup();
+
   return res;
 }
 
index c6c09ea533428a4209ca827cf55d7b8a9a56700d..4a1931dd6460c5d591f0adcc209b6ffd2384c7de 100644 (file)
@@ -22,6 +22,7 @@ int test(char *URL)
   CURLM *m;
   fd_set rd, wr, exc;
   CURLMcode res;
+  char done = FALSE;
   int running;
   int max_fd;
   int rc;
@@ -30,8 +31,16 @@ int test(char *URL)
   char ml_timedout = FALSE;
   char mp_timedout = FALSE;
 
-  curl_global_init(CURL_GLOBAL_ALL);
-  c = curl_easy_init();
+  if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
+    fprintf(stderr, "curl_global_init() failed\n");
+    return TEST_ERR_MAJOR_BAD;
+  }
+
+  if ((c = curl_easy_init()) == NULL) {
+    fprintf(stderr, "curl_easy_init() failed\n");
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
 
   /* the point here being that there must not run anything on the given
      proxy port */
@@ -39,88 +48,99 @@ int test(char *URL)
   curl_easy_setopt(c, CURLOPT_URL, URL);
   curl_easy_setopt(c, CURLOPT_VERBOSE, 1);
 
-  m = curl_multi_init();
+  if ((m = curl_multi_init()) == NULL) {
+    fprintf(stderr, "curl_multi_init() failed\n");
+    curl_easy_cleanup(c);
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
 
-  res = curl_multi_add_handle(m, c);
-  if(res && (res != CURLM_CALL_MULTI_PERFORM))
-    ; /* major failure */
-  else {
+  if ((res = (int)curl_multi_add_handle(m, c)) != CURLM_OK) {
+    fprintf(stderr, "curl_multi_add_handle() failed, "
+            "with code %d\n", res);
+    curl_multi_cleanup(m);
+    curl_easy_cleanup(c);
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
 
-    ml_timedout = FALSE;
-    ml_start = curlx_tvnow();
+  ml_timedout = FALSE;
+  ml_start = curlx_tvnow();
 
-    do {
-      struct timeval interval;
+  while (!done) {
+    struct timeval interval;
 
-      interval.tv_sec = 1;
-      interval.tv_usec = 0;
+    interval.tv_sec = 1;
+    interval.tv_usec = 0;
 
-      if (curlx_tvdiff(curlx_tvnow(), ml_start) > 
-          MAIN_LOOP_HANG_TIMEOUT) {
-        ml_timedout = TRUE;
-        break;
-      }
+    if (curlx_tvdiff(curlx_tvnow(), ml_start) > 
+        MAIN_LOOP_HANG_TIMEOUT) {
+      ml_timedout = TRUE;
+      break;
+    }
+    mp_timedout = FALSE;
+    mp_start = curlx_tvnow();
 
-      fprintf(stderr, "curl_multi_perform()\n");
+    fprintf(stderr, "curl_multi_perform()\n");
 
-      mp_timedout = FALSE;
-      mp_start = curlx_tvnow();
+    res = CURLM_CALL_MULTI_PERFORM;
 
-      do {
-        res = curl_multi_perform(m, &running);
-        if (curlx_tvdiff(curlx_tvnow(), mp_start) > 
-            MULTI_PERFORM_HANG_TIMEOUT) {
-          mp_timedout = TRUE;
-          break;
-        }
-      } while (res == CURLM_CALL_MULTI_PERFORM);
-      if (mp_timedout)
-        break;
-      if(!running) {
-        /* This is where this code is expected to reach */
-        int numleft;
-        CURLMsg *msg = curl_multi_info_read(m, &numleft);
-        fprintf(stderr, "Expected: not running\n");
-        if(msg && !numleft)
-          ret = 100; /* this is where we should be */
-        else
-          ret = 99; /* not correct */
+    while (res == CURLM_CALL_MULTI_PERFORM) {
+      res = (int)curl_multi_perform(m, &running);
+      if (curlx_tvdiff(curlx_tvnow(), mp_start) > 
+          MULTI_PERFORM_HANG_TIMEOUT) {
+        mp_timedout = TRUE;
         break;
       }
-      fprintf(stderr, "running == %d, res == %d\n", running, res);
+    }
+    if (mp_timedout)
+      break;
+
+    if(!running) {
+      /* This is where this code is expected to reach */
+      int numleft;
+      CURLMsg *msg = curl_multi_info_read(m, &numleft);
+      fprintf(stderr, "Expected: not running\n");
+      if(msg && !numleft)
+        ret = 100; /* this is where we should be */
+      else
+        ret = 99; /* not correct */
+      break;
+    }
+    fprintf(stderr, "running == %d, res == %d\n", running, res);
 
-      if (res != CURLM_OK) {
-        ret = 2;
-        break;
-      }
+    if (res != CURLM_OK) {
+      ret = 2;
+      break;
+    }
 
-      FD_ZERO(&rd);
-      FD_ZERO(&wr);
-      FD_ZERO(&exc);
-      max_fd = 0;
+    FD_ZERO(&rd);
+    FD_ZERO(&wr);
+    FD_ZERO(&exc);
+    max_fd = 0;
 
-      fprintf(stderr, "curl_multi_fdset()\n");
-      if (curl_multi_fdset(m, &rd, &wr, &exc, &max_fd) != CURLM_OK) {
-        fprintf(stderr, "unexpected failured of fdset.\n");
-        ret = 3;
-        break;
-      }
-      rc = select_test(max_fd+1, &rd, &wr, &exc, &interval);
-      fprintf(stderr, "select returned %d\n", rc);
-
-    } while(1);
-    if (ml_timedout || mp_timedout) {
-      if (ml_timedout) fprintf(stderr, "ml_timedout\n");
-      if (mp_timedout) fprintf(stderr, "mp_timedout\n");
-      fprintf(stderr, "ABORTING TEST, since it seems "
-              "that it would have run forever.\n");
-      ret = 77;
+    fprintf(stderr, "curl_multi_fdset()\n");
+    if (curl_multi_fdset(m, &rd, &wr, &exc, &max_fd) != CURLM_OK) {
+      fprintf(stderr, "unexpected failured of fdset.\n");
+      ret = 3;
+      break;
     }
+    rc = select_test(max_fd+1, &rd, &wr, &exc, &interval);
+    fprintf(stderr, "select returned %d\n", rc);
+  }
+
+  if (ml_timedout || mp_timedout) {
+    if (ml_timedout) fprintf(stderr, "ml_timedout\n");
+    if (mp_timedout) fprintf(stderr, "mp_timedout\n");
+    fprintf(stderr, "ABORTING TEST, since it seems "
+            "that it would have run forever.\n");
+    ret = TEST_ERR_RUNS_FOREVER;
   }
 
   curl_multi_remove_handle(m, c);
   curl_easy_cleanup(c);
   curl_multi_cleanup(m);
+  curl_global_cleanup();
 
   return ret;
 }
index 7de0bc1e9aad252d7da45db1fc360814a3cb4af8..85ce38b3275e5c73b6631c2049234d5eda4fa004 100644 (file)
@@ -42,6 +42,7 @@ int test(char *URL)
   FILE *hd_src ;
   int hd ;
   struct_stat file_info;
+  struct curl_slist *hl;
 
   struct curl_slist *headerlist=NULL;
   const char *buf_1 = "RNFR 505";
@@ -73,51 +74,69 @@ int test(char *URL)
     return -2; /* if this happens things are major weird */
   }
 
-  /* In windows, this will init the winsock stuff */
-  curl_global_init(CURL_GLOBAL_ALL);
+  if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
+    fprintf(stderr, "curl_global_init() failed\n");
+    fclose(hd_src);
+    return TEST_ERR_MAJOR_BAD;
+  }
 
   /* get a curl handle */
-  curl = curl_easy_init();
-  if(curl) {
-    struct curl_slist *hl;
-    /* build a list of commands to pass to libcurl */
-    hl = curl_slist_append(headerlist, buf_1);
-    if(hl) {
-      headerlist = curl_slist_append(hl, buf_2);
-      if(hl)
-        headerlist = hl;
-    }
+  if ((curl = curl_easy_init()) == NULL) {
+    fprintf(stderr, "curl_easy_init() failed\n");
+    curl_global_cleanup();
+    fclose(hd_src);
+    return TEST_ERR_MAJOR_BAD;
+  }
 
-    /* enable uploading */
-    curl_easy_setopt(curl, CURLOPT_UPLOAD, TRUE) ;
+  /* build a list of commands to pass to libcurl */
 
-    /* enable verbose */
-    curl_easy_setopt(curl, CURLOPT_VERBOSE, TRUE) ;
+  if ((hl = curl_slist_append(headerlist, buf_1)) == NULL) {
+    fprintf(stderr, "curl_slist_append() failed\n");
+    curl_easy_cleanup(curl);
+    curl_global_cleanup();
+    fclose(hd_src);
+    return TEST_ERR_MAJOR_BAD;
+  }
+  if ((headerlist = curl_slist_append(hl, buf_2)) == NULL) {
+    fprintf(stderr, "curl_slist_append() failed\n");
+    curl_slist_free_all(hl);
+    curl_easy_cleanup(curl);
+    curl_global_cleanup();
+    fclose(hd_src);
+    return TEST_ERR_MAJOR_BAD;
+  }
+  headerlist = hl;
 
-    /* specify target */
-    curl_easy_setopt(curl,CURLOPT_URL, URL);
+  /* enable uploading */
+  curl_easy_setopt(curl, CURLOPT_UPLOAD, TRUE) ;
 
-    /* pass in that last of FTP commands to run after the transfer */
-    curl_easy_setopt(curl, CURLOPT_POSTQUOTE, headerlist);
+  /* enable verbose */
+  curl_easy_setopt(curl, CURLOPT_VERBOSE, TRUE) ;
 
-    /* now specify which file to upload */
-    curl_easy_setopt(curl, CURLOPT_INFILE, hd_src);
+  /* specify target */
+  curl_easy_setopt(curl,CURLOPT_URL, URL);
 
-    /* and give the size of the upload (optional) */
-    curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE,
-                     (curl_off_t)file_info.st_size);
+  /* pass in that last of FTP commands to run after the transfer */
+  curl_easy_setopt(curl, CURLOPT_POSTQUOTE, headerlist);
 
-    /* Now run off and do what you've been told! */
-    res = curl_easy_perform(curl);
+  /* now specify which file to upload */
+  curl_easy_setopt(curl, CURLOPT_INFILE, hd_src);
 
-    /* clean up the FTP commands list */
-    curl_slist_free_all (headerlist);
+  /* and give the size of the upload (optional) */
+  curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE,
+                   (curl_off_t)file_info.st_size);
 
-    /* always cleanup */
-    curl_easy_cleanup(curl);
-  }
-  fclose(hd_src); /* close the local file */
+  /* Now run off and do what you've been told! */
+  res = curl_easy_perform(curl);
+
+  /* clean up the FTP commands list */
+  curl_slist_free_all(headerlist);
 
+  /* close the local file */
+  fclose(hd_src);
+
+  curl_easy_cleanup(curl);
   curl_global_cleanup();
+
   return res;
 }
index ecf17fa2211cada4f2e43bef239c9d78d9128c80..862329b72d7234a9b3727ce41d3c4a43cad1e38a 100644 (file)
@@ -94,9 +94,14 @@ void *fire(void *ptr)
   CURLcode code;
   struct curl_slist *headers;
   struct Tdata *tdata = (struct Tdata*)ptr;
-  CURL *curl = curl_easy_init();
+  CURL *curl;
   int i=0;
 
+  if ((curl = curl_easy_init()) == NULL) {
+    fprintf(stderr, "curl_easy_init() failed\n");
+    return NULL;
+  }
+
   headers = sethost(NULL);
   curl_easy_setopt(curl, CURLOPT_VERBOSE,    1);
   curl_easy_setopt(curl, CURLOPT_HTTPHEADER, (void*)headers);
@@ -143,11 +148,18 @@ int test(char *URL)
   user.counter = 0;
   
   printf( "GLOBAL_INIT\n" );
-  curl_global_init( CURL_GLOBAL_ALL );
+  if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
+    fprintf(stderr, "curl_global_init() failed\n");
+    return TEST_ERR_MAJOR_BAD;
+  }
 
   /* prepare share */
   printf( "SHARE_INIT\n" );
-  share = curl_share_init();
+  if ((share = curl_share_init()) == NULL) {
+    fprintf(stderr, "curl_share_init() failed\n");
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
 
   if ( CURLSHE_OK == scode ) {
     printf( "CURLSHOPT_LOCKFUNC\n" );
@@ -171,8 +183,10 @@ int test(char *URL)
   }
 
   if ( CURLSHE_OK != scode ) {
+    fprintf(stderr, "curl_share_setopt() failed\n");
     curl_share_cleanup(share);
-    return 2;
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
   }
 
   
@@ -196,7 +210,12 @@ int test(char *URL)
 
   /* fetch a another one and save cookies */
   printf( "*** run %d\n", i );
-  curl = curl_easy_init();
+  if ((curl = curl_easy_init()) == NULL) {
+    fprintf(stderr, "curl_easy_init() failed\n");
+    curl_share_cleanup(share);
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
 
   url = suburl( URL, i );
   headers = sethost( NULL );
index e13201d1a7464c11a98d1c4f426ea82928e6f19f..b4ad6fe7d1a4c485b9a524fe15c549198da2e0f9 100644 (file)
@@ -18,11 +18,34 @@ int test(char *URL)
   char ml_timedout = FALSE;
   char mp_timedout = FALSE;
 
-  multi = curl_multi_init();
+  if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
+    fprintf(stderr, "curl_global_init() failed\n");
+    return TEST_ERR_MAJOR_BAD;
+  }
+
+  if ((multi = curl_multi_init()) == NULL) {
+    fprintf(stderr, "curl_multi_init() failed\n");
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
+
+  if ((curls = curl_easy_init()) == NULL) {
+    fprintf(stderr, "curl_easy_init() failed\n");
+    curl_multi_cleanup(multi);
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
 
-  curls=curl_easy_init();
   curl_easy_setopt(curls, CURLOPT_URL, URL);
-  curl_multi_add_handle(multi, curls);
+
+  if ((res = (int)curl_multi_add_handle(multi, curls)) != CURLM_OK) {
+    fprintf(stderr, "curl_multi_add_handle() failed, "
+            "with code %d\n", res);
+    curl_easy_cleanup(curls);
+    curl_multi_cleanup(multi);
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
 
   mp_timedout = FALSE;
   mp_start = curlx_tvnow();
@@ -84,7 +107,7 @@ int test(char *URL)
     if (mp_timedout) fprintf(stderr, "mp_timedout\n");
     fprintf(stderr, "ABORTING TEST, since it seems "
             "that it would have run forever.\n");
-    i = 77;
+    i = TEST_ERR_RUNS_FOREVER;
   }
   else {
     msg = curl_multi_info_read(multi, &still_running);
@@ -96,6 +119,7 @@ int test(char *URL)
 
   curl_multi_cleanup(multi);
   curl_easy_cleanup(curls);
+  curl_global_cleanup();
 
   return i; /* return the final return code */
 }
index ddec600b0f9cc6a79c637270f4c3f73f8b4d0520..dc0efcaa165fc473d3b93c8d7c8095750bdf805f 100644 (file)
@@ -34,34 +34,44 @@ int test(char *URL)
   pooh.readptr = data;
   pooh.sizeleft = strlen(data);
 
-  curl = curl_easy_init();
-  if(curl) {
-    /* First set the URL that is about to receive our POST. */
-    curl_easy_setopt(curl, CURLOPT_URL, URL);
+  if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
+    fprintf(stderr, "curl_global_init() failed\n");
+    return TEST_ERR_MAJOR_BAD;
+  }
 
-    /* Now specify we want to POST data */
-    curl_easy_setopt(curl, CURLOPT_POST, TRUE);
+  if ((curl = curl_easy_init()) == NULL) {
+    fprintf(stderr, "curl_easy_init() failed\n");
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
 
-    /* Set the expected POST size */
-    curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (long)pooh.sizeleft);
+  /* First set the URL that is about to receive our POST. */
+  curl_easy_setopt(curl, CURLOPT_URL, URL);
 
-    /* we want to use our own read function */
-    curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);
+  /* Now specify we want to POST data */
+  curl_easy_setopt(curl, CURLOPT_POST, TRUE);
 
-    /* pointer to pass to our read function */
-    curl_easy_setopt(curl, CURLOPT_INFILE, &pooh);
+  /* Set the expected POST size */
+  curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (long)pooh.sizeleft);
 
-    /* get verbose debug output please */
-    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
+  /* we want to use our own read function */
+  curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);
 
-    /* include headers in the output */
-    curl_easy_setopt(curl, CURLOPT_HEADER, TRUE);
+  /* pointer to pass to our read function */
+  curl_easy_setopt(curl, CURLOPT_INFILE, &pooh);
 
-    /* Perform the request, res will get the return code */
-    res = curl_easy_perform(curl);
+  /* get verbose debug output please */
+  curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
+
+  /* include headers in the output */
+  curl_easy_setopt(curl, CURLOPT_HEADER, TRUE);
+
+  /* Perform the request, res will get the return code */
+  res = curl_easy_perform(curl);
+
+  /* always cleanup */
+  curl_easy_cleanup(curl);
+  curl_global_cleanup();
 
-    /* always cleanup */
-    curl_easy_cleanup(curl);
-  }
   return res;
 }
index bdc8951953daf2ef9033542d52dd0caec43df3c5..c6d3113db0f6ec5ae03adf9ca2d00f187ab726ce 100644 (file)
@@ -176,7 +176,9 @@ int test(char *URL)
 {
   CURLM* multi;
   sslctxparm p;
-
+  CURLMcode res;
+  int running;
+  char done = FALSE;
   int i = 0;
   CURLMsg *msg;
 
@@ -189,9 +191,16 @@ int test(char *URL)
     portnum = atoi(arg2);
   }
 
-  curl_global_init(CURL_GLOBAL_ALL);
+  if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
+    fprintf(stderr, "curl_global_init() failed\n");
+    return TEST_ERR_MAJOR_BAD;
+  }
 
-  p.curl = curl_easy_init();
+  if ((p.curl = curl_easy_init()) == NULL) {
+    fprintf(stderr, "curl_easy_init() failed\n");
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
 
   p.accessinfoURL = (unsigned char *) strdup(URL);
   p.accesstype = OBJ_obj2nid(OBJ_txt2obj("AD_DVCS",0)) ;
@@ -204,94 +213,97 @@ int test(char *URL)
   curl_easy_setopt(p.curl, CURLOPT_SSL_VERIFYPEER, FALSE);
   curl_easy_setopt(p.curl, CURLOPT_SSL_VERIFYHOST, 1);
 
-  fprintf(stderr, "Going to perform %s\n", (char *)p.accessinfoURL);
-
-  {
-    CURLMcode res;
-    int running;
-    char done=FALSE;
+  if ((multi = curl_multi_init()) == NULL) {
+    fprintf(stderr, "curl_multi_init() failed\n");
+    curl_easy_cleanup(p.curl);
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
 
-    multi = curl_multi_init();
+  if ((res = curl_multi_add_handle(multi, p.curl)) != CURLM_OK) {
+    fprintf(stderr, "curl_multi_add_handle() failed, "
+            "with code %d\n", res);
+    curl_multi_cleanup(multi);
+    curl_easy_cleanup(p.curl);
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
 
-    res = curl_multi_add_handle(multi, p.curl);
+  fprintf(stderr, "Going to perform %s\n", (char *)p.accessinfoURL);
 
-    ml_timedout = FALSE;
-    ml_start = curlx_tvnow();
+  ml_timedout = FALSE;
+  ml_start = curlx_tvnow();
 
-    while (!done) {
-      fd_set rd, wr, exc;
-      int max_fd;
-      struct timeval interval;
+  while (!done) {
+    fd_set rd, wr, exc;
+    int max_fd;
+    struct timeval interval;
 
-      interval.tv_sec = 1;
-      interval.tv_usec = 0;
+    interval.tv_sec = 1;
+    interval.tv_usec = 0;
 
-      if (curlx_tvdiff(curlx_tvnow(), ml_start) > 
-          MAIN_LOOP_HANG_TIMEOUT) {
-        ml_timedout = TRUE;
+    if (curlx_tvdiff(curlx_tvnow(), ml_start) > 
+        MAIN_LOOP_HANG_TIMEOUT) {
+      ml_timedout = TRUE;
+      break;
+    }
+    mp_timedout = FALSE;
+    mp_start = curlx_tvnow();
+
+    while (res == CURLM_CALL_MULTI_PERFORM) {
+      res = curl_multi_perform(multi, &running);
+      if (curlx_tvdiff(curlx_tvnow(), mp_start) > 
+          MULTI_PERFORM_HANG_TIMEOUT) {
+        mp_timedout = TRUE;
         break;
       }
-      mp_timedout = FALSE;
-      mp_start = curlx_tvnow();
-
-      while (res == CURLM_CALL_MULTI_PERFORM) {
-        res = curl_multi_perform(multi, &running);
-        if (curlx_tvdiff(curlx_tvnow(), mp_start) > 
-            MULTI_PERFORM_HANG_TIMEOUT) {
-          mp_timedout = TRUE;
-          break;
-        }
-        fprintf(stderr, "running=%d res=%d\n",running,res);
-        if (running <= 0) {
-          done = TRUE;
-          break;
-        }
-      }
-      if (mp_timedout || done)
-        break;
-
-      if (res != CURLM_OK) {
-        fprintf(stderr, "not okay???\n");
-        i = 80;
+      fprintf(stderr, "running=%d res=%d\n",running,res);
+      if (running <= 0) {
+        done = TRUE;
         break;
       }
+    }
+    if (mp_timedout || done)
+      break;
 
-      FD_ZERO(&rd);
-      FD_ZERO(&wr);
-      FD_ZERO(&exc);
-      max_fd = 0;
+    if (res != CURLM_OK) {
+      fprintf(stderr, "not okay???\n");
+      i = 80;
+      break;
+    }
 
-      if (curl_multi_fdset(multi, &rd, &wr, &exc, &max_fd) != CURLM_OK) {
-        fprintf(stderr, "unexpected failured of fdset.\n");
-        i = 89;
-        break;
-      }
+    FD_ZERO(&rd);
+    FD_ZERO(&wr);
+    FD_ZERO(&exc);
+    max_fd = 0;
 
-      if (select_test(max_fd+1, &rd, &wr, &exc, &interval) == -1) {
-        fprintf(stderr, "bad select??\n");
-        i =95;
-        break;
-      }
-
-      res = CURLM_CALL_MULTI_PERFORM;
+    if (curl_multi_fdset(multi, &rd, &wr, &exc, &max_fd) != CURLM_OK) {
+      fprintf(stderr, "unexpected failured of fdset.\n");
+      i = 89;
+      break;
     }
 
-    if (ml_timedout || mp_timedout) {
-      if (ml_timedout) fprintf(stderr, "ml_timedout\n");
-      if (mp_timedout) fprintf(stderr, "mp_timedout\n");
-      fprintf(stderr, "ABORTING TEST, since it seems "
-              "that it would have run forever.\n");
-      i = 77;
-    }
-    else {
-      msg = curl_multi_info_read(multi, &running);
-      /* this should now contain a result code from the easy handle, get it */
-      if(msg)
-        i = msg->data.result;
+    if (select_test(max_fd+1, &rd, &wr, &exc, &interval) == -1) {
+      fprintf(stderr, "bad select??\n");
+      i =95;
+      break;
     }
+
+    res = CURLM_CALL_MULTI_PERFORM;
   }
 
-  if ((!ml_timedout) && (!mp_timedout)) {
+  if (ml_timedout || mp_timedout) {
+    if (ml_timedout) fprintf(stderr, "ml_timedout\n");
+    if (mp_timedout) fprintf(stderr, "mp_timedout\n");
+    fprintf(stderr, "ABORTING TEST, since it seems "
+            "that it would have run forever.\n");
+    i = TEST_ERR_RUNS_FOREVER;
+  }
+  else {
+    msg = curl_multi_info_read(multi, &running);
+    /* this should now contain a result code from the easy handle, get it */
+    if(msg)
+      i = msg->data.result;
     fprintf(stderr, "all done\n");
   }
 
index 4dfdbd96260993c73e608c066a89cd9278565fd0..6c1269a861964018cd4a23f9eb7b43e481f2b591 100644 (file)
@@ -41,42 +41,56 @@ int test(char *URL)
   struct WriteThis pooh;
   pooh.counter = 0;
 
-  slist = curl_slist_append(slist, "Transfer-Encoding: chunked");
+  if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
+    fprintf(stderr, "curl_global_init() failed\n");
+    return TEST_ERR_MAJOR_BAD;
+  }
 
-  curl = curl_easy_init();
-  if(curl) {
-    /* First set the URL that is about to receive our POST. */
-    curl_easy_setopt(curl, CURLOPT_URL, URL);
+  if ((curl = curl_easy_init()) == NULL) {
+    fprintf(stderr, "curl_easy_init() failed\n");
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
 
-    /* Now specify we want to POST data */
-    curl_easy_setopt(curl, CURLOPT_POST, TRUE);
+  slist = curl_slist_append(slist, "Transfer-Encoding: chunked");
+  if (slist == NULL) {
+    fprintf(stderr, "curl_slist_append() failed\n");
+    curl_easy_cleanup(curl);
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
 
-    /* we want to use our own read function */
-    curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);
+  /* First set the URL that is about to receive our POST. */
+  curl_easy_setopt(curl, CURLOPT_URL, URL);
 
-    /* pointer to pass to our read function */
-    curl_easy_setopt(curl, CURLOPT_INFILE, &pooh);
+  /* Now specify we want to POST data */
+  curl_easy_setopt(curl, CURLOPT_POST, TRUE);
 
-    /* get verbose debug output please */
-    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
+  /* we want to use our own read function */
+  curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);
 
-    /* include headers in the output */
-    curl_easy_setopt(curl, CURLOPT_HEADER, TRUE);
+  /* pointer to pass to our read function */
+  curl_easy_setopt(curl, CURLOPT_INFILE, &pooh);
 
-    /* enforce chunked transfer by setting the header */
-    curl_easy_setopt(curl, CURLOPT_HTTPHEADER, slist);
+  /* get verbose debug output please */
+  curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
 
-    /* Perform the request, res will get the return code */
-    res = curl_easy_perform(curl);
+  /* include headers in the output */
+  curl_easy_setopt(curl, CURLOPT_HEADER, TRUE);
 
-    /* always cleanup */
-    curl_easy_cleanup(curl);
+  /* enforce chunked transfer by setting the header */
+  curl_easy_setopt(curl, CURLOPT_HTTPHEADER, slist);
 
-  }
+  /* Perform the request, res will get the return code */
+  res = curl_easy_perform(curl);
 
+  /* clean up the headers list */
   if(slist)
-    /* clean up the headers list */
     curl_slist_free_all(slist);
 
+  /* always cleanup */
+  curl_easy_cleanup(curl);
+  curl_global_cleanup();
+
   return res;
 }
index c0861a0531c98367802669d34ece11b1d600eaa8..40d23276f23183faa7d6530ede4bd89e82ffe898 100644 (file)
@@ -3,12 +3,28 @@
 int test(char *URL)
 {
   CURLcode res;
-  CURL *curl = curl_easy_init();
+  CURL *curl;
+
+  if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
+    fprintf(stderr, "curl_global_init() failed\n");
+    return TEST_ERR_MAJOR_BAD;
+  }
+
+  if ((curl = curl_easy_init()) == NULL) {
+    fprintf(stderr, "curl_easy_init() failed\n");
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
+
   curl_easy_setopt(curl, CURLOPT_URL, URL);
   curl_easy_setopt(curl, CURLOPT_FILETIME, 1);
   curl_easy_setopt(curl, CURLOPT_NOBODY, 1);
   curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
+
   res = curl_easy_perform(curl);
+
   curl_easy_cleanup(curl);
+  curl_global_cleanup();
+
   return (int)res;
 }
index d52baa6d0de27eefdf081d43a113b80b87ec86ad..f8edbd37d0085811117adf33072a31ad2f465247 100644 (file)
@@ -43,6 +43,8 @@ int test(char *URL)
     }
     else
       rc = 4;
+
+    curl_global_cleanup();
   }
   else
     rc = 5;
index 3d886dd61c6ab6c727cc5ad8d7347f3a95de396e..661d6c20501c2be54435789f698f01269f22f8d2 100644 (file)
@@ -14,34 +14,44 @@ int test(char *URL)
   CURL *curl;
   CURLcode res=CURLE_OK;
 
-  curl = curl_easy_init();
-  if(curl) {
-    /* First set the URL that is about to receive our POST. */
-    curl_easy_setopt(curl, CURLOPT_URL, URL);
+  if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
+    fprintf(stderr, "curl_global_init() failed\n");
+    return TEST_ERR_MAJOR_BAD;
+  }
 
-    /* Now specify we want to POST data */
-    curl_easy_setopt(curl, CURLOPT_POST, TRUE);
+  if ((curl = curl_easy_init()) == NULL) {
+    fprintf(stderr, "curl_easy_init() failed\n");
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
 
-    /* Set the expected POST size */
-    curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, 1);
+  /* First set the URL that is about to receive our POST. */
+  curl_easy_setopt(curl, CURLOPT_URL, URL);
 
-    /* we want to use our own read function */
-    curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);
+  /* Now specify we want to POST data */
+  curl_easy_setopt(curl, CURLOPT_POST, TRUE);
 
-    /* pointer to pass to our read function */
-    curl_easy_setopt(curl, CURLOPT_INFILE, NULL);
+  /* Set the expected POST size */
+  curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, 1);
 
-    /* get verbose debug output please */
-    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
+  /* we want to use our own read function */
+  curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);
 
-    /* include headers in the output */
-    curl_easy_setopt(curl, CURLOPT_HEADER, TRUE);
+  /* pointer to pass to our read function */
+  curl_easy_setopt(curl, CURLOPT_INFILE, NULL);
 
-    /* Perform the request, res will get the return code */
-    res = curl_easy_perform(curl);
+  /* get verbose debug output please */
+  curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
+
+  /* include headers in the output */
+  curl_easy_setopt(curl, CURLOPT_HEADER, TRUE);
+
+  /* Perform the request, res will get the return code */
+  res = curl_easy_perform(curl);
+
+  /* always cleanup */
+  curl_easy_cleanup(curl);
+  curl_global_cleanup();
 
-    /* always cleanup */
-    curl_easy_cleanup(curl);
-  }
   return (int)res;
 }
index 7100fd8a560e03837795cc90b700fa20bf2c1f69..f68dcc09e9f17d1e3de6b040c4db4de20fac333b 100644 (file)
@@ -5,39 +5,49 @@ int test(char *URL)
   CURL *curl;
   CURLcode res=CURLE_OK;
 
-  curl = curl_easy_init();
-  if(curl) {
-    /* First set the URL that is about to receive our POST. */
-    curl_easy_setopt(curl, CURLOPT_URL, URL);
+  if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
+    fprintf(stderr, "curl_global_init() failed\n");
+    return TEST_ERR_MAJOR_BAD;
+  }
 
-    /* Based on a bug report by Niels van Tongeren on June 29, 2004:
+  if ((curl = curl_easy_init()) == NULL) {
+    fprintf(stderr, "curl_easy_init() failed\n");
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
 
-    A weird situation occurs when request 1 is a POST request and the request
-    2 is a HEAD request. For the POST request we set the CURLOPT_POSTFIELDS,
-    CURLOPT_POSTFIELDSIZE and CURLOPT_POST options. For the HEAD request we
-    set the CURLOPT_NOBODY option to '1'.
+  /* First set the URL that is about to receive our POST. */
+  curl_easy_setopt(curl, CURLOPT_URL, URL);
 
-    */
+  /* Based on a bug report by Niels van Tongeren on June 29, 2004:
 
-    curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "moo");
-    curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, 3);
-    curl_easy_setopt(curl, CURLOPT_POST, 1);
+  A weird situation occurs when request 1 is a POST request and the request
+  2 is a HEAD request. For the POST request we set the CURLOPT_POSTFIELDS,
+  CURLOPT_POSTFIELDSIZE and CURLOPT_POST options. For the HEAD request we
+  set the CURLOPT_NOBODY option to '1'.
 
-    /* this is where transfer 1 would take place, but skip that and change
-       options right away instead */
+  */
 
-    curl_easy_setopt(curl, CURLOPT_NOBODY, 1);
+  curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "moo");
+  curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, 3);
+  curl_easy_setopt(curl, CURLOPT_POST, 1);
 
-    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1); /* show verbose for debug */
-    curl_easy_setopt(curl, CURLOPT_HEADER, 1); /* include header */
+  /* this is where transfer 1 would take place, but skip that and change
+     options right away instead */
 
-    /* Now, we should be making a fine HEAD request */
+  curl_easy_setopt(curl, CURLOPT_NOBODY, 1);
 
-    /* Perform the request 2, res will get the return code */
-    res = curl_easy_perform(curl);
+  curl_easy_setopt(curl, CURLOPT_VERBOSE, 1); /* show verbose for debug */
+  curl_easy_setopt(curl, CURLOPT_HEADER, 1); /* include header */
+
+  /* Now, we should be making a fine HEAD request */
+
+  /* Perform the request 2, res will get the return code */
+  res = curl_easy_perform(curl);
+
+  /* always cleanup */
+  curl_easy_cleanup(curl);
+  curl_global_cleanup();
 
-    /* always cleanup */
-    curl_easy_cleanup(curl);
-  }
   return (int)res;
 }
index ce075110dd8c89c1518c38a2b9fdfd893555f51a..d166c2ab12f7a6bd177a94d8cac10a22988049bb 100644 (file)
@@ -5,20 +5,30 @@ int test(char *URL)
   CURL *curl;
   CURLcode res=CURLE_OK;
 
-  curl = curl_easy_init();
-  if(curl) {
-    /* First set the URL that is about to receive our POST. */
-    curl_easy_setopt(curl, CURLOPT_URL, URL);
-    curl_easy_setopt(curl, CURLOPT_POSTFIELDS, NULL);
-    curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, 0);
-    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1); /* show verbose for debug */
-    curl_easy_setopt(curl, CURLOPT_HEADER, 1); /* include header */
-
-    /* Now, we should be making a zero byte POST request */
-    res = curl_easy_perform(curl);
+  if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
+    fprintf(stderr, "curl_global_init() failed\n");
+    return TEST_ERR_MAJOR_BAD;
+  }
 
-    /* always cleanup */
-    curl_easy_cleanup(curl);
+  if ((curl = curl_easy_init()) == NULL) {
+    fprintf(stderr, "curl_easy_init() failed\n");
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
   }
+
+  /* First set the URL that is about to receive our POST. */
+  curl_easy_setopt(curl, CURLOPT_URL, URL);
+  curl_easy_setopt(curl, CURLOPT_POSTFIELDS, NULL);
+  curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, 0);
+  curl_easy_setopt(curl, CURLOPT_VERBOSE, 1); /* show verbose for debug */
+  curl_easy_setopt(curl, CURLOPT_HEADER, 1); /* include header */
+
+  /* Now, we should be making a zero byte POST request */
+  res = curl_easy_perform(curl);
+
+  /* always cleanup */
+  curl_easy_cleanup(curl);
+  curl_global_cleanup();
+
   return (int)res;
 }
index 6e71fb4bb94a27b45d554c810b52639b2d67e6a8..6ebc93bf17d321e3a137345e5d87cb9f6c0fc1ca 100644 (file)
@@ -5,19 +5,29 @@ int test(char *URL)
   CURL *curl;
   CURLcode res=CURLE_OK;
 
-  curl = curl_easy_init();
-  if(curl) {
-    /* First set the URL that is about to receive our POST. */
-    curl_easy_setopt(curl, CURLOPT_URL, URL);
-    curl_easy_setopt(curl, CURLOPT_HTTPPOST, NULL);
-    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1); /* show verbose for debug */
-    curl_easy_setopt(curl, CURLOPT_HEADER, 1); /* include header */
-
-    /* Now, we should be making a zero byte POST request */
-    res = curl_easy_perform(curl);
+  if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
+    fprintf(stderr, "curl_global_init() failed\n");
+    return TEST_ERR_MAJOR_BAD;
+  }
 
-    /* always cleanup */
-    curl_easy_cleanup(curl);
+  if ((curl = curl_easy_init()) == NULL) {
+    fprintf(stderr, "curl_easy_init() failed\n");
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
   }
+
+  /* First set the URL that is about to receive our POST. */
+  curl_easy_setopt(curl, CURLOPT_URL, URL);
+  curl_easy_setopt(curl, CURLOPT_HTTPPOST, NULL);
+  curl_easy_setopt(curl, CURLOPT_VERBOSE, 1); /* show verbose for debug */
+  curl_easy_setopt(curl, CURLOPT_HEADER, 1); /* include header */
+
+  /* Now, we should be making a zero byte POST request */
+  res = curl_easy_perform(curl);
+
+  /* always cleanup */
+  curl_easy_cleanup(curl);
+  curl_global_cleanup();
+
   return (int)res;
 }
index 1c858ee35554a03e29a6acb3e8a50513297b3761..0d8ee18cc953af969370810bfbe2eb0777f2de2d 100644 (file)
 
 static int fd[NUM_OPEN];
 
+/*
+ * our_errno() returns the NOT *socket-related* errno (or equivalent)
+ * on this platform to hide platform specific for the calling function.
+ */
+
+static int our_errno(void)
+{
+#ifdef WIN32
+  return (int)GetLastError();
+#else
+  return errno;
+#endif
+}
+
 static int rlimit(void)
 {
   int i;
@@ -75,7 +89,8 @@ static int rlimit(void)
   /* open a dummy descriptor */
   fd[0] = open(DEV_NULL, O_RDONLY);
   if (fd[0] == -1) {
-    fprintf(stderr, "open: failed to open %s\n", DEV_NULL);
+    fprintf(stderr, "open: failed to open %s "
+            "with errno %d\n", DEV_NULL, our_errno());
     return -4;
   }
 
@@ -83,7 +98,8 @@ static int rlimit(void)
   for (i = 1; i < NUM_OPEN; i++) {
     fd[i] = dup(fd[0]);
     if (fd[i] == -1) {
-      fprintf(stderr, "dup: attempt #%i failed\n", i);
+      fprintf(stderr, "dup: attempt #%d failed "
+              "with errno %d\n", i, our_errno());
       for (i--; i >= 0; i--)
         close(fd[i]);
       return -5;
@@ -111,11 +127,22 @@ int test(char *URL)
     /* failure */
     return 100;
 
-  curl = curl_easy_init();
+  if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
+    fprintf(stderr, "curl_global_init() failed\n");
+    return TEST_ERR_MAJOR_BAD;
+  }
+
+  if ((curl = curl_easy_init()) == NULL) {
+    fprintf(stderr, "curl_easy_init() failed\n");
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
+
   curl_easy_setopt(curl, CURLOPT_URL, URL);
   curl_easy_setopt(curl, CURLOPT_HEADER, TRUE);
   res = curl_easy_perform(curl);
   curl_easy_cleanup(curl);
+  curl_global_cleanup();
 
   /* we never close the file descriptors */
 
index 007703e117fce2a5e2fab6534a3e7e8b545b8d9e..1090b5e9bf04a4fd1d8ea3b0704ba922c9512fe1 100644 (file)
@@ -3,19 +3,35 @@
 int test(char *URL)
 {
   CURLcode res;
-  CURL *curl = curl_easy_init();
+  CURL *curl;
+
+  if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
+    fprintf(stderr, "curl_global_init() failed\n");
+    return TEST_ERR_MAJOR_BAD;
+  }
+
+  if ((curl = curl_easy_init()) == NULL) {
+    fprintf(stderr, "curl_easy_init() failed\n");
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
+
   curl_easy_setopt(curl, CURLOPT_URL, URL);
   curl_easy_setopt(curl, CURLOPT_USERPWD, "monster:underbed");
   curl_easy_setopt(curl, CURLOPT_HEADER, TRUE);
   curl_easy_setopt(curl, CURLOPT_VERBOSE, TRUE);
+
   /* get first page */
   res = curl_easy_perform(curl);
 
   curl_easy_setopt(curl, CURLOPT_USERPWD, "anothermonster:inwardrobe");
+
   /* get second page */
   res = curl_easy_perform(curl);
 
   curl_easy_cleanup(curl);
+  curl_global_cleanup();
+
   return (int)res;
 }
 
index efc2823a102a363b2994e0fe53c4e6965c5ff53b..c6959e684b0e438691006ae2eea114fa33fb2697 100644 (file)
@@ -3,11 +3,27 @@
 int test(char *URL)
 {
   CURLcode res;
-  CURL *curl = curl_easy_init();
+  CURL *curl;
+
+  if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
+    fprintf(stderr, "curl_global_init() failed\n");
+    return TEST_ERR_MAJOR_BAD;
+  }
+
+  if ((curl = curl_easy_init()) == NULL) {
+    fprintf(stderr, "curl_easy_init() failed\n");
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
+
   curl_easy_setopt(curl, CURLOPT_URL, URL);
   curl_easy_setopt(curl, CURLOPT_FILETIME, 1);
   curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
+
   res = curl_easy_perform(curl);
+
   curl_easy_cleanup(curl);
+  curl_global_cleanup();
+
   return (int)res;
 }
index 96630f303a989b0c375dfcfef7184f6657181948..4bfcf4954b3a83666ee1b53d816045a473225309 100644 (file)
@@ -3,14 +3,29 @@
 int test(char *URL)
 {
   CURLcode res;
-  CURL *curl = curl_easy_init();
+  CURL *curl;
+
+  if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
+    fprintf(stderr, "curl_global_init() failed\n");
+    return TEST_ERR_MAJOR_BAD;
+  }
+
+  if ((curl = curl_easy_init()) == NULL) {
+    fprintf(stderr, "curl_easy_init() failed\n");
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
+
   curl_easy_setopt(curl, CURLOPT_URL, URL);
   curl_easy_setopt(curl, CURLOPT_PORT, atoi(arg2));
   curl_easy_setopt(curl, CURLOPT_USERPWD, "xxx:yyy");
   curl_easy_setopt(curl, CURLOPT_VERBOSE, TRUE);
 
   res = curl_easy_perform(curl);
+
   curl_easy_cleanup(curl);
+  curl_global_cleanup();
+
   return (int)res;
 }
 
index d0a41c5f50baf11251ea10a05ee6938aa4218607..fd1bfdcc468919fdf684e13801b18ee4f73782d9 100644 (file)
@@ -3,7 +3,19 @@
 int test(char *URL)
 {
   CURLcode res;
-  CURL *curl = curl_easy_init();
+  CURL *curl;
+
+  if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
+    fprintf(stderr, "curl_global_init() failed\n");
+    return TEST_ERR_MAJOR_BAD;
+  }
+
+  if ((curl = curl_easy_init()) == NULL) {
+    fprintf(stderr, "curl_easy_init() failed\n");
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
+
   curl_easy_setopt(curl, CURLOPT_PROXY, arg2);
   curl_easy_setopt(curl, CURLOPT_URL, URL);
   curl_easy_setopt(curl, CURLOPT_PORT, 19999);
@@ -11,7 +23,10 @@ int test(char *URL)
   curl_easy_setopt(curl, CURLOPT_VERBOSE, TRUE);
 
   res = curl_easy_perform(curl);
+
   curl_easy_cleanup(curl);
+  curl_global_cleanup();
+
   return (int)res;
 }
 
index be9f4346635c0de4befb5c9c729026d8a1e7d226..f5fef195c8e280972f882849f2423867b1b55a72 100644 (file)
@@ -3,13 +3,28 @@
 int test(char *URL)
 {
   CURLcode res;
-  CURL *curl = curl_easy_init();
+  CURL *curl;
+
+  if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
+    fprintf(stderr, "curl_global_init() failed\n");
+    return TEST_ERR_MAJOR_BAD;
+  }
+
+  if ((curl = curl_easy_init()) == NULL) {
+    fprintf(stderr, "curl_easy_init() failed\n");
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
+
   curl_easy_setopt(curl, CURLOPT_URL, URL);
   curl_easy_setopt(curl, CURLOPT_UPLOAD, 1);
   curl_easy_setopt(curl, CURLOPT_VERBOSE, TRUE);
 
   res = curl_easy_perform(curl);
+
   curl_easy_cleanup(curl);
+  curl_global_cleanup();
+
   return (int)res;
 }
 
index 01f34118a2a782d005a9bb1643d9070f009e3a12..8d837056b3a065531ada4d18441035010d6b4f49 100644 (file)
@@ -49,15 +49,17 @@ int test(char *URL)
      an example! */
   hd_src = fopen(arg2, "rb");
 
-  /* In windows, this will init the winsock stuff */
-  curl_global_init(CURL_GLOBAL_ALL);
+  if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
+    fprintf(stderr, "curl_global_init() failed\n");
+    fclose(hd_src);
+    return TEST_ERR_MAJOR_BAD;
+  }
 
-  /* get a curl handle */
-  curl = curl_easy_init();
-  if(!curl) {
+  if ((curl = curl_easy_init()) == NULL) {
+    fprintf(stderr, "curl_easy_init() failed\n");
     fclose(hd_src);
     curl_global_cleanup();
-    return 100; /* major bad */
+    return TEST_ERR_MAJOR_BAD;
   }
 
   /* enable uploading */
@@ -87,9 +89,23 @@ int test(char *URL)
   curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE,
                    (curl_off_t)file_info.st_size);
 
-  m = curl_multi_init();
+  if ((m = curl_multi_init()) == NULL) {
+    fprintf(stderr, "curl_multi_init() failed\n");
+    curl_easy_cleanup(curl);
+    curl_global_cleanup();
+    fclose(hd_src);
+    return TEST_ERR_MAJOR_BAD;
+  }
 
-  res = (int)curl_multi_add_handle(m, curl);
+  if ((res = (int)curl_multi_add_handle(m, curl)) != CURLM_OK) {
+    fprintf(stderr, "curl_multi_add_handle() failed, "
+            "with code %d\n", res);
+    curl_multi_cleanup(m);
+    curl_easy_cleanup(curl);
+    curl_global_cleanup();
+    fclose(hd_src);
+    return TEST_ERR_MAJOR_BAD;
+  }
 
   ml_timedout = FALSE;
   ml_start = curlx_tvnow();
@@ -155,7 +171,7 @@ int test(char *URL)
     if (mp_timedout) fprintf(stderr, "mp_timedout\n");
     fprintf(stderr, "ABORTING TEST, since it seems "
             "that it would have run forever.\n");
-    res = 77;
+    res = TEST_ERR_RUNS_FOREVER;
   }
 
 #ifdef LIB529
index fc1c788af27c5f2db6cbd0660b767064c9b6708f..b819bed3418b1522d4b305651ba1182d66b26929 100644 (file)
@@ -48,21 +48,28 @@ int test(char *URL)
   char done=FALSE;
   CURLM *m;
   int current=0;
-  int i;
+  int i, j;
   struct timeval ml_start;
   struct timeval mp_start;
   char ml_timedout = FALSE;
   char mp_timedout = FALSE;
 
-  /* In windows, this will init the winsock stuff */
-  curl_global_init(CURL_GLOBAL_ALL);
+  if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
+    fprintf(stderr, "curl_global_init() failed\n");
+    return TEST_ERR_MAJOR_BAD;
+  }
 
   /* get NUM_HANDLES easy handles */
   for(i=0; i < NUM_HANDLES; i++) {
     curl[i] = curl_easy_init();
     if(!curl[i]) {
+      fprintf(stderr, "curl_easy_init() failed "
+              "on handle #%d\n", i);
+      for (j=i-1; j >= 0; j--) {
+        curl_easy_cleanup(curl[j]);
+      }
       curl_global_cleanup();
-      return 100 + i; /* major bad */
+      return TEST_ERR_MAJOR_BAD + i;
     }
     curl_easy_setopt(curl[i], CURLOPT_URL, URL);
 
@@ -70,9 +77,25 @@ int test(char *URL)
     curl_easy_setopt(curl[i], CURLOPT_VERBOSE, 1);
   }
 
-  m = curl_multi_init();
+  if ((m = curl_multi_init()) == NULL) {
+    fprintf(stderr, "curl_multi_init() failed\n");
+    for(i=0; i < NUM_HANDLES; i++) {
+      curl_easy_cleanup(curl[i]);
+    }
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
 
-  res = (int)curl_multi_add_handle(m, curl[current]);
+  if ((res = (int)curl_multi_add_handle(m, curl[current])) != CURLM_OK) {
+    fprintf(stderr, "curl_multi_add_handle() failed, "
+            "with code %d\n", res);
+    curl_multi_cleanup(m);
+    for(i=0; i < NUM_HANDLES; i++) {
+      curl_easy_cleanup(curl[i]);
+    }
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
 
   ml_timedout = FALSE;
   ml_start = curlx_tvnow();
@@ -170,7 +193,7 @@ int test(char *URL)
     if (mp_timedout) fprintf(stderr, "mp_timedout\n");
     fprintf(stderr, "ABORTING TEST, since it seems "
             "that it would have run forever.\n");
-    res = 77;
+    res = TEST_ERR_RUNS_FOREVER;
   }
 
 #ifndef LIB527
index 88c65767df291ba6a51e89d92b171d42b6b7aa8b..987296c7a7461605db4035377ff66e214cf24560 100644 (file)
@@ -27,23 +27,36 @@ int test(char *URL)
   int running;
   char done=FALSE;
   CURLM *m;
-  int i;
+  int i, j;
   struct timeval ml_start;
   struct timeval mp_start;
   char ml_timedout = FALSE;
   char mp_timedout = FALSE;
 
-  /* In windows, this will init the winsock stuff */
-  curl_global_init(CURL_GLOBAL_ALL);
+  if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
+    fprintf(stderr, "curl_global_init() failed\n");
+    return TEST_ERR_MAJOR_BAD;
+  }
 
-  m = curl_multi_init();
+  if ((m = curl_multi_init()) == NULL) {
+    fprintf(stderr, "curl_multi_init() failed\n");
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
 
   /* get NUM_HANDLES easy handles */
   for(i=0; i < NUM_HANDLES; i++) {
     curl[i] = curl_easy_init();
     if(!curl[i]) {
+      fprintf(stderr, "curl_easy_init() failed "
+              "on handle #%d\n", i);
+      for (j=i-1; j >= 0; j--) {
+        curl_multi_remove_handle(m, curl[j]);
+        curl_easy_cleanup(curl[j]);
+      }
+      curl_multi_cleanup(m);
       curl_global_cleanup();
-      return 100 + i; /* major bad */
+      return TEST_ERR_MAJOR_BAD + i;
     }
     curl_easy_setopt(curl[i], CURLOPT_URL, URL);
 
@@ -53,7 +66,19 @@ int test(char *URL)
     /* include headers */
     curl_easy_setopt(curl[i], CURLOPT_HEADER, 1);
 
-    res = (int)curl_multi_add_handle(m, curl[i]);
+    /* add handle to multi */
+    if ((res = (int)curl_multi_add_handle(m, curl[i])) != CURLM_OK) {
+      fprintf(stderr, "curl_multi_add_handle() failed, "
+              "on handle #%d with code %d\n", i, res);
+      curl_easy_cleanup(curl[i]);
+      for (j=i-1; j >= 0; j--) {
+        curl_multi_remove_handle(m, curl[j]);
+        curl_easy_cleanup(curl[j]);
+      }
+      curl_multi_cleanup(m);
+      curl_global_cleanup();
+      return TEST_ERR_MAJOR_BAD + i;
+    }
   }
 
   curl_multi_setopt(m, CURLMOPT_PIPELINING, 1);
@@ -124,17 +149,17 @@ int test(char *URL)
     if (mp_timedout) fprintf(stderr, "mp_timedout\n");
     fprintf(stderr, "ABORTING TEST, since it seems "
             "that it would have run forever.\n");
-    res = 77;
+    res = TEST_ERR_RUNS_FOREVER;
   }
 
-  /* get NUM_HANDLES easy handles */
+  /* cleanup NUM_HANDLES easy handles */
   for(i=0; i < NUM_HANDLES; i++) {
     curl_multi_remove_handle(m, curl[i]);
     curl_easy_cleanup(curl[i]);
   }
 
   curl_multi_cleanup(m);
-
   curl_global_cleanup();
+
   return res;
 }
index bd0cef3068bc789861ae62c454c2d16beb9106c9..24764bd3c4d719456f0a7674b78aba5eacdc4220 100644 (file)
@@ -34,22 +34,36 @@ int test(char *URL)
   char ml_timedout = FALSE;
   char mp_timedout = FALSE;
 
-  /* In windows, this will init the winsock stuff */
-  curl_global_init(CURL_GLOBAL_ALL);
+  if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
+    fprintf(stderr, "curl_global_init() failed\n");
+    return TEST_ERR_MAJOR_BAD;
+  }
 
-  curl = curl_easy_init();
-  if(!curl) {
+  if ((curl = curl_easy_init()) == NULL) {
+    fprintf(stderr, "curl_easy_init() failed\n");
     curl_global_cleanup();
-    return 100; /* major bad */
+    return TEST_ERR_MAJOR_BAD;
   }
 
   curl_easy_setopt(curl, CURLOPT_URL, URL);
   curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
   curl_easy_setopt(curl, CURLOPT_FAILONERROR, 1);
 
-  m = curl_multi_init();
+  if ((m = curl_multi_init()) == NULL) {
+    fprintf(stderr, "curl_multi_init() failed\n");
+    curl_easy_cleanup(curl);
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
 
-  res = (int)curl_multi_add_handle(m, curl);
+  if ((res = (int)curl_multi_add_handle(m, curl)) != CURLM_OK) {
+    fprintf(stderr, "curl_multi_add_handle() failed, "
+            "with code %d\n", res);
+    curl_multi_cleanup(m);
+    curl_easy_cleanup(curl);
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
 
   ml_timedout = FALSE;
   ml_start = curlx_tvnow();
@@ -138,12 +152,12 @@ int test(char *URL)
     if (mp_timedout) fprintf(stderr, "mp_timedout\n");
     fprintf(stderr, "ABORTING TEST, since it seems "
             "that it would have run forever.\n");
-    res = 77;
+    res = TEST_ERR_RUNS_FOREVER;
   }
 
   curl_easy_cleanup(curl);
   curl_multi_cleanup(m);
-
   curl_global_cleanup();
+
   return res;
 }
index 6ac24b40d314aa0e8b98328ab1dd51530941d7db..adad23a169f493330b143edd002965d948fb10ac 100644 (file)
@@ -70,8 +70,26 @@ static CURLMcode perform(CURLM * multi)
 
 int test(char *URL)
 {
-  CURLM *multi = curl_multi_init();
-  CURL *easy = curl_easy_init();
+  CURLM *multi;
+  CURL *easy;
+
+  if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
+    fprintf(stderr, "curl_global_init() failed\n");
+    return TEST_ERR_MAJOR_BAD;
+  }
+
+  if ((multi = curl_multi_init()) == NULL) {
+    fprintf(stderr, "curl_multi_init() failed\n");
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
+
+  if ((easy = curl_easy_init()) == NULL) {
+    fprintf(stderr, "curl_easy_init() failed\n");
+    curl_multi_cleanup(multi);
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
 
   curl_multi_setopt(multi, CURLMOPT_PIPELINING, 1);
 
@@ -96,6 +114,7 @@ int test(char *URL)
   curl_multi_remove_handle(multi, easy);
   curl_easy_cleanup(easy);
   curl_multi_cleanup(multi);
+  curl_global_cleanup();
 
   printf("Finished!\n");
 
index 83ec94b655217a34f67251e0ff7e5eb833d469d3..73897639711acaf07b499e3690bb3a3be371871b 100644 (file)
@@ -31,6 +31,9 @@
 #define TRUE 1
 #endif
 
+#define TEST_ERR_MAJOR_BAD     100
+#define TEST_ERR_RUNS_FOREVER   99
+
 extern char *arg2; /* set by first.c to the argv[2] or NULL */
 
 int select_test (int num_fds, fd_set *rd, fd_set *wr, fd_set *exc,