From 336992cc54583b4ca949401d93ca3194e226d21e Mon Sep 17 00:00:00 2001
From: Dan Fandrich <dan@coneharvesters.com>
Date: Fri, 11 Jul 2008 18:23:06 +0000
Subject: [PATCH] Fixed test 553 to pass the torture test.

---
 CHANGES                |  3 +++
 tests/libtest/lib552.c |  7 +++---
 tests/libtest/lib553.c | 51 +++++++++++++++++++++++++-----------------
 3 files changed, 38 insertions(+), 23 deletions(-)

diff --git a/CHANGES b/CHANGES
index 82e3d5a61f..a9bc57cf3d 100644
--- a/CHANGES
+++ b/CHANGES
@@ -6,6 +6,9 @@
 
                                   Changelog
 
+Daniel Fandrich (11 Jul 2008)
+- Fixed test 553 to pass the torture test.
+
 Daniel Stenberg (11 Jul 2008)
 - Daniel Fandrich found out we didn't pass on the user-agent properly when
   doing "proxy-tunnels" with non-HTTP prototols and that was simply because
diff --git a/tests/libtest/lib552.c b/tests/libtest/lib552.c
index 5a0eb1c682..1c6e234551 100644
--- a/tests/libtest/lib552.c
+++ b/tests/libtest/lib552.c
@@ -146,10 +146,10 @@ static curlioerr ioctl_callback(CURL * handle, int cmd, void *clientp)
 int test(char *URL)
 {
   CURL *curl;
-  CURLcode res;
+  CURLcode res = CURLE_OUT_OF_MEMORY;
   struct data config;
   size_t i;
-  char fill[] = "test data";
+  static const char fill[] = "test data";
 
   config.trace_ascii = 1; /* enable ascii tracing */
 
@@ -190,5 +190,6 @@ int test(char *URL)
     /* always cleanup */
     curl_easy_cleanup(curl);
   }
-  return 0;
+  curl_global_cleanup();
+  return (int)res;
 }
diff --git a/tests/libtest/lib553.c b/tests/libtest/lib553.c
index 7af25e5bbc..0603b3fd5e 100644
--- a/tests/libtest/lib553.c
+++ b/tests/libtest/lib553.c
@@ -39,36 +39,47 @@ static size_t myreadfunc(void *ptr, size_t size, size_t nmemb, void *stream)
 #define SIZE_HEADERS 5000
 
 static char buf[SIZE_HEADERS + 100];
+
 int test(char *URL)
 {
   CURL *curl;
   CURLcode res;
   int i;
-  struct curl_slist *headerlist=NULL;
+  struct curl_slist *headerlist=NULL, *hl;
 
   curl_global_init(CURL_GLOBAL_ALL);
   curl = curl_easy_init();
 
-  for (i = 0; i < NUM_HEADERS; i++) {
-    int len;
-    len = sprintf(buf, "Header%d: ", i);
-    memset(&buf[len], 'A', SIZE_HEADERS);
-    buf[len + SIZE_HEADERS]=0; /* zero terminate */
-    headerlist = curl_slist_append(headerlist,  buf);
+  if(curl) {
+    for (i = 0; i < NUM_HEADERS; i++) {
+      int len = sprintf(buf, "Header%d: ", i);
+      memset(&buf[len], 'A', SIZE_HEADERS);
+      buf[len + SIZE_HEADERS]=0; /* zero terminate */
+      hl = curl_slist_append(headerlist,  buf);
+      if (!hl)
+        goto errout;
+      headerlist = hl;
+    }
+    hl = curl_slist_append(headerlist, "Expect: ");
+    if (!hl)
+      goto errout;
+    headerlist = hl;
+
+    curl_easy_setopt(curl, CURLOPT_URL, URL);
+    curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist);
+    curl_easy_setopt(curl, CURLOPT_POST, 1L);
+    curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (long)POSTLEN);
+    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
+    curl_easy_setopt(curl, CURLOPT_HEADER, 1L);
+    curl_easy_setopt(curl, CURLOPT_READFUNCTION, myreadfunc);
+    res = curl_easy_perform(curl);
+
+errout:
+    curl_easy_cleanup(curl);
+
+    curl_slist_free_all(headerlist);
   }
-  headerlist = curl_slist_append(headerlist, "Expect: ");
-
-  curl_easy_setopt(curl, CURLOPT_URL, URL);
-  curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist);
-  curl_easy_setopt(curl, CURLOPT_POST, 1L);
-  curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (long)POSTLEN);
-  curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
-  curl_easy_setopt(curl, CURLOPT_HEADER, 1L);
-  curl_easy_setopt(curl, CURLOPT_READFUNCTION, myreadfunc);
-  res = curl_easy_perform(curl);
-  curl_easy_cleanup(curl);
-
-  curl_slist_free_all(headerlist);
+  curl_global_cleanup();
 
   return (int)res;
 }
-- 
GitLab