From 7f737a3f10d03c8c3a34076c29c3b0556b61f8c4 Mon Sep 17 00:00:00 2001 From: "Evgeny Grin (Karlson2k)" Date: Sun, 24 Apr 2016 15:16:39 +0000 Subject: Properly cleanup resources in test_concurrent_stop --- src/testcurl/test_concurrent_stop.c | 52 +++++++++++++++++++++++++------------ 1 file changed, 36 insertions(+), 16 deletions(-) diff --git a/src/testcurl/test_concurrent_stop.c b/src/testcurl/test_concurrent_stop.c index 1420b7c8..a7799b64 100644 --- a/src/testcurl/test_concurrent_stop.c +++ b/src/testcurl/test_concurrent_stop.c @@ -100,6 +100,16 @@ ahc_echo (void *cls, return ret; } +static void +clean_curl(void * param) +{ + if (param) + { + CURL * const c = *((CURL **)param); + if (c) + curl_easy_cleanup (c); + } +} static void * thread_gets (void *param) @@ -108,39 +118,46 @@ thread_gets (void *param) CURLcode errornum; unsigned int i; char * const url = (char*) param; + int pth_olst; + if (pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, &pth_olst) || + pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, &pth_olst) ) + { + fprintf(stderr, + "pthread_setcancelstate()/pthread_setcanceltype() failed.\n"); + _exit(99); + } for (i=0;i= 0; j--) - pthread_join(par[j], NULL); - fprintf(stderr, "pthread_create failed.\n"); + for (j--; j >= 0; j--) + { + pthread_cancel(par[j]); + pthread_join(par[j], NULL); + } _exit(99); } } + sleep (1); for (j=0;j