X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fcurl_json.c;h=55d4cd539d64b083eec5a0f28e3d27580579a383;hb=e35f3c5c634216860f14586a7d17232022d8b588;hp=a7acc81ca42a233393ca6701b0cb244f1d6206a4;hpb=66124ee0d4b7677b2243c6a722eaad621d694f46;p=collectd.git diff --git a/src/curl_json.c b/src/curl_json.c index a7acc81c..55d4cd53 100644 --- a/src/curl_json.c +++ b/src/curl_json.c @@ -279,7 +279,7 @@ static int cj_cb_start_array (void * ctx) static int cj_cb_end_array (void * ctx) { - return cj_cb_start (ctx); + return cj_cb_end (ctx); } static yajl_callbacks ycallbacks = { @@ -535,6 +535,7 @@ static int cj_init_curl (cj_t *db) /* {{{ */ return (-1); } + curl_easy_setopt (db->curl, CURLOPT_NOSIGNAL, 1); curl_easy_setopt (db->curl, CURLOPT_WRITEFUNCTION, cj_curl_callback); curl_easy_setopt (db->curl, CURLOPT_WRITEDATA, db); curl_easy_setopt (db->curl, CURLOPT_USERAGENT, @@ -671,7 +672,7 @@ static int cj_config_add_url (oconfig_item_t *ci) /* {{{ */ ssnprintf (cb_name, sizeof (cb_name), "curl_json-%s-%s", db->instance, db->url); - plugin_register_complex_read (cb_name, cj_read, + plugin_register_complex_read (/* group = */ NULL, cb_name, cj_read, /* interval = */ NULL, &ud); } else @@ -764,6 +765,7 @@ static int cj_curl_perform (cj_t *db, CURL *curl) /* {{{ */ if (db->yajl == NULL) { ERROR ("curl_json plugin: yajl_alloc failed."); + db->yajl = yprev; return (-1); } @@ -775,7 +777,8 @@ static int cj_curl_perform (cj_t *db, CURL *curl) /* {{{ */ curl_easy_getinfo(curl, CURLINFO_EFFECTIVE_URL, &url); curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &rc); - if (rc != 200) + /* The response code is zero if a non-HTTP transport was used. */ + if ((rc != 0) && (rc != 200)) { ERROR ("curl_json plugin: curl_easy_perform failed with response code %ld (%s)", rc, url);