From 8fe15035d1d08e2e628be26f73044baa58e459c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=A6=8C=EA=A6=AB=EA=A6=B6=EA=A6=8F=EA=A7=80=EA=A6=A6?= =?UTF-8?q?=EA=A6=BF=EA=A6=A7=EA=A6=AE=EA=A6=91=EA=A6=A9=EA=A6=AD=EA=A7=80?= Date: Sun, 14 Nov 2021 11:10:43 +0800 Subject: One handle for every thread See libcurl-tutorial(3) manual page, "Handle the Easy libcurl". --- request.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'request.c') diff --git a/request.c b/request.c index 06c0d4f..34bff9c 100644 --- a/request.c +++ b/request.c @@ -17,10 +17,9 @@ extern emscripten_fetch_attr_t attr; #include extern char *sampleurl; -extern CURL *curl; +extern char *cainfo; struct container { - CURL *curl; struct curl_httppost *post; void (*handler)(icclient_response *); icclient_response *response; @@ -40,7 +39,7 @@ static int async(void *arg) { int ret = thrd_success; struct container *container = (struct container *)arg; - CURLcode res = curl_easy_perform(container->curl); + CURLcode res = curl_easy_perform(container->response->curl); if (container->post) curl_formfree(container->post); if (res == CURLE_OK && container->handler) @@ -149,6 +148,14 @@ void request(void (*handler)(icclient_response *), void (*callback)(void *), str } emscripten_fetch(&attr, url); #else + CURL *curl = curl_easy_init(); + curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); + curl_easy_setopt(curl, CURLOPT_COOKIEFILE, ""); + if (cainfo) + curl_easy_setopt(curl, CURLOPT_CAINFO, cainfo); +#ifdef DEBUG + curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L); +#endif curl_easy_setopt(curl, CURLOPT_URL, url); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, append); icclient_response *response = malloc(sizeof(icclient_response)); @@ -170,7 +177,7 @@ void request(void (*handler)(icclient_response *), void (*callback)(void *), str } else curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L); struct container *container = malloc(sizeof(struct container)); - container->curl = curl; + response->curl = curl; container->post = post; container->handler = handler; container->response = response; -- cgit v1.2.3