diff --git a/src/curl_json.c b/src/curl_json.c
index e3660258e3320f6e3df3cf953f3a3a91f4e38aaa..0cf72ac3a10879c7d22d9f5e546aa20038eaaa54 100644 (file)
--- a/src/curl_json.c
+++ b/src/curl_json.c
db->state[db->depth].key = NULL;
}
- return 1;
+ return (CJ_CB_CONTINUE);
}
static int cj_cb_string (void *ctx, const unsigned char *val,
char *ptr;
if (db->depth != 1) /* e.g. _all_dbs */
- return 1;
+ return (CJ_CB_CONTINUE);
cj_cb_map_key (ctx, val, len); /* same logic */
cj_curl_perform (db, curl);
curl_easy_cleanup (curl);
}
- return 1;
+ return (CJ_CB_CONTINUE);
}
static int cj_cb_start (void *ctx)
if (++db->depth >= YAJL_MAX_DEPTH)
{
ERROR ("curl_json plugin: %s depth exceeds max, aborting.", db->url);
- return 0;
+ return (CJ_CB_ABORT);
}
- return 1;
+ return (CJ_CB_CONTINUE);
}
static int cj_cb_end (void *ctx)
cj_t *db = (cj_t *)ctx;
db->state[db->depth].tree = NULL;
--db->depth;
- return 1;
+ return (CJ_CB_CONTINUE);
}
static int cj_cb_start_map (void *ctx)
if (db->yajl == NULL)
{
ERROR ("curl_json plugin: yajl_alloc failed.");
+ db->yajl = yprev;
return (-1);
}
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);