diff options
Diffstat (limited to 'tests/libtest/lib583.c')
-rw-r--r-- | tests/libtest/lib583.c | 59 |
1 files changed, 35 insertions, 24 deletions
diff --git a/tests/libtest/lib583.c b/tests/libtest/lib583.c index f1270e1d3..ad5a5cea7 100644 --- a/tests/libtest/lib583.c +++ b/tests/libtest/lib583.c @@ -26,48 +26,59 @@ #include "test.h" -#include <unistd.h> #include <sys/stat.h> +#include "memdebug.h" + int test(char *URL) { - CURLMcode retVal; int stillRunning; - CURLM* multiHandle; - CURL* curl; - int res; + CURLM* multiHandle = NULL; + CURL* curl = NULL; + int res = 0; + + global_init(CURL_GLOBAL_ALL); + + multi_init(multiHandle); + + easy_init(curl); - curl_global_init(CURL_GLOBAL_ALL); + easy_setopt(curl, CURLOPT_USERPWD, libtest_arg2); + easy_setopt(curl, CURLOPT_SSH_PUBLIC_KEYFILE, "curl_client_key.pub"); + easy_setopt(curl, CURLOPT_SSH_PRIVATE_KEYFILE, "curl_client_key"); - multiHandle = curl_multi_init(); - curl = curl_easy_init(); + easy_setopt(curl, CURLOPT_UPLOAD, 1L); + easy_setopt(curl, CURLOPT_VERBOSE, 1L); - test_setopt(curl, CURLOPT_USERPWD, libtest_arg2); - test_setopt(curl, CURLOPT_SSH_PUBLIC_KEYFILE, "curl_client_key.pub"); - test_setopt(curl, CURLOPT_SSH_PRIVATE_KEYFILE, "curl_client_key"); + easy_setopt(curl, CURLOPT_URL, URL); + easy_setopt(curl, CURLOPT_INFILESIZE, (long)5); - curl_easy_setopt(curl, CURLOPT_UPLOAD, 1); - curl_easy_setopt(curl, CURLOPT_VERBOSE, 1); + multi_add_handle(multiHandle, curl); - curl_easy_setopt(curl, CURLOPT_URL, URL); - curl_easy_setopt(curl, CURLOPT_INFILESIZE, (long)5); + /* this tests if removing an easy handle immediately after multi + perform has been called succeeds or not. */ - curl_multi_add_handle(multiHandle, curl); - retVal = curl_multi_perform(multiHandle, &stillRunning); - if (retVal != CURLM_OK) - fprintf(stderr, "curl_multi_perform() failed!n"); + fprintf(stderr, "curl_multi_perform()...\n"); - fprintf(stderr, "curl_multi_remove_handle()!\n"); - retVal = curl_multi_remove_handle(multiHandle, curl); - if (retVal == CURLM_OK) - fprintf(stderr, "curl_multi_remove_handle() was successful!\n"); + multi_perform(multiHandle, &stillRunning); + + fprintf(stderr, "curl_multi_perform() succeeded\n"); + + fprintf(stderr, "curl_multi_remove_handle()...\n"); + res = (int) curl_multi_remove_handle(multiHandle, curl); + if(res) + fprintf(stderr, "curl_multi_remove_handle() failed, " + "with code %d\n", res); else - fprintf(stderr, "curl_multi_remove_handle() failed\n"); + fprintf(stderr, "curl_multi_remove_handle() succeeded\n"); test_cleanup: + /* undocumented cleanup sequence - type UB */ + curl_easy_cleanup(curl); curl_multi_cleanup(multiHandle); + curl_global_cleanup(); return res; } |