X-Git-Url: https://git.wpitchoune.net/gitweb/?p=prss.git;a=blobdiff_plain;f=src%2Fhttp.c;h=12f8b72a64c25c32c1e5668c5918de4e13f50b0d;hp=52238ec9ace98c1b97956a450f69bfd2fe4cfa23;hb=162e41906b89dad6110b0b6f78ccc5855eca43da;hpb=09a826a93753ebb1b82fbc30574c034f084e02b8 diff --git a/src/http.c b/src/http.c index 52238ec..12f8b72 100644 --- a/src/http.c +++ b/src/http.c @@ -20,6 +20,7 @@ #include #define _(str) gettext(str) +#include #include #include #include @@ -35,6 +36,7 @@ struct ucontent { }; static CURL *curl; +static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; static size_t cbk_curl(void *buffer, size_t size, size_t nmemb, void *userp) { @@ -64,13 +66,16 @@ void http_cleanup() curl_easy_cleanup(curl); } -char *http_get(const char *url, const char *content) +static char *http_get(const char *url, const char *content) { struct ucontent chunk; + int result; chunk.data = malloc(1); chunk.len = 0; + pthread_mutex_lock(&lock); + curl_easy_setopt(curl, CURLOPT_URL, url); curl_easy_setopt(curl, CURLOPT_VERBOSE, 0); if (content) { @@ -82,7 +87,11 @@ char *http_get(const char *url, const char *content) curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, cbk_curl); curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&chunk); - if (curl_easy_perform(curl) == CURLE_OK) + result = curl_easy_perform(curl); + + pthread_mutex_unlock(&lock); + + if (result == CURLE_OK) return chunk.data; free(chunk.data);