projects
/
prss.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
(no commit message)
[prss.git]
/
src
/
http.c
diff --git
a/src/http.c
b/src/http.c
index
a9cf301
..
12f8b72
100644
(file)
--- a/
src/http.c
+++ b/
src/http.c
@@
-20,6
+20,7
@@
#include <libintl.h>
#define _(str) gettext(str)
#include <libintl.h>
#define _(str) gettext(str)
+#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@
-27,8
+28,7
@@
#include <curl/curl.h>
#include "http.h"
#include <curl/curl.h>
#include "http.h"
-
-static int debug = 1;
+#include "log.h"
struct ucontent {
char *data;
struct ucontent {
char *data;
@@
-36,6
+36,7
@@
struct ucontent {
};
static CURL *curl;
};
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)
{
static size_t cbk_curl(void *buffer, size_t size, size_t nmemb, void *userp)
{
@@
-65,13
+66,16
@@
void http_cleanup()
curl_easy_cleanup(curl);
}
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;
{
struct ucontent chunk;
+ int result;
chunk.data = malloc(1);
chunk.len = 0;
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) {
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_VERBOSE, 0);
if (content) {
@@
-83,11
+87,15
@@
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);
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);
return chunk.data;
free(chunk.data);
-
fprintf(stderr,
_("HTTP request fail url=%s"), url);
+
log_err(
_("HTTP request fail url=%s"), url);
return NULL;
}
return NULL;
}
@@
-98,17
+106,19
@@
json_object *http_json_get(const char *url, struct json_object *j)
char *out;
struct json_object *result;
char *out;
struct json_object *result;
+ if (log_level >= LOG_DEBUG)
+ log_debug("HTTP request= %s",
+ json_object_to_json_string(j));
+
in = json_object_to_json_string(j);
out = http_get(url, in);
in = json_object_to_json_string(j);
out = http_get(url, in);
- if (debug)
- printf("HTTP request= %s\n",
- json_object_to_json_string(j));
-
if (out) {
result = json_tokener_parse(out);
if (out) {
result = json_tokener_parse(out);
- if (debug)
- printf("HTTP reply= %s\n", out);
+
+ if (log_level >= LOG_DEBUG)
+ log_debug("HTTP reply= %s", out);
+
free(out);
return result;
}
free(out);
return result;
}