projects
/
collectd.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge pull request #3047 from cjmayo/style_border
[collectd.git]
/
src
/
curl_json.c
diff --git
a/src/curl_json.c
b/src/curl_json.c
index
4803948
..
3b2fffe
100644
(file)
--- a/
src/curl_json.c
+++ b/
src/curl_json.c
@@
-74,7
+74,7
@@
typedef struct {
* exists for this part of the JSON structure. */
typedef struct {
cj_tree_entry_t *entry;
* exists for this part of the JSON structure. */
typedef struct {
cj_tree_entry_t *entry;
-
_B
ool in_array;
+
b
ool in_array;
int index;
char name[DATA_MAX_NAME_LEN];
} cj_state_t;
int index;
char name[DATA_MAX_NAME_LEN];
} cj_state_t;
@@
-82,6
+82,7
@@
typedef struct {
struct cj_s /* {{{ */
{
char *instance;
struct cj_s /* {{{ */
{
char *instance;
+ char *plugin_name;
char *host;
char *sock;
char *host;
char *sock;
@@
-90,13
+91,12
@@
struct cj_s /* {{{ */
char *user;
char *pass;
char *credentials;
char *user;
char *pass;
char *credentials;
-
_B
ool digest;
-
_B
ool verify_peer;
-
_B
ool verify_host;
+
b
ool digest;
+
b
ool verify_peer;
+
b
ool verify_host;
char *cacert;
struct curl_slist *headers;
char *post_body;
char *cacert;
struct curl_slist *headers;
char *post_body;
- cdtime_t interval;
int timeout;
curl_stats_t *stats;
int timeout;
curl_stats_t *stats;
@@
-225,11
+225,6
@@
static void cj_advance_array(cj_t *db) {
#define CJ_CB_ABORT 0
#define CJ_CB_CONTINUE 1
#define CJ_CB_ABORT 0
#define CJ_CB_CONTINUE 1
-static int cj_cb_boolean(void *ctx, int boolVal) {
- cj_advance_array(ctx);
- return CJ_CB_CONTINUE;
-}
-
static int cj_cb_null(void *ctx) {
cj_advance_array(ctx);
return CJ_CB_CONTINUE;
static int cj_cb_null(void *ctx) {
cj_advance_array(ctx);
return CJ_CB_CONTINUE;
@@
-241,7
+236,7
@@
static int cj_cb_number(void *ctx, const char *number, yajl_len_t number_len) {
/* Create a null-terminated version of the string. */
char buffer[number_len + 1];
memcpy(buffer, number, number_len);
/* Create a null-terminated version of the string. */
char buffer[number_len + 1];
memcpy(buffer, number, number_len);
- buffer[sizeof(buffer) - 1] =
0
;
+ buffer[sizeof(buffer) - 1] =
'\0'
;
if (db->state[db->depth].entry == NULL ||
db->state[db->depth].entry->type != KEY) {
if (db->state[db->depth].entry == NULL ||
db->state[db->depth].entry->type != KEY) {
@@
-260,7
+255,6
@@
static int cj_cb_number(void *ctx, const char *number, yajl_len_t number_len) {
value_t vt;
int status = parse_value(buffer, &vt, type);
if (status != 0) {
value_t vt;
int status = parse_value(buffer, &vt, type);
if (status != 0) {
- NOTICE("curl_json plugin: Unable to parse number: \"%s\"", buffer);
cj_advance_array(ctx);
return CJ_CB_CONTINUE;
}
cj_advance_array(ctx);
return CJ_CB_CONTINUE;
}
@@
-278,7
+272,7
@@
static int cj_cb_map_key(void *ctx, unsigned char const *in_name,
char name[in_name_len + 1];
memmove(name, in_name, in_name_len);
char name[in_name_len + 1];
memmove(name, in_name, in_name_len);
- name[sizeof(name) - 1] =
0
;
+ name[sizeof(name) - 1] =
'\0'
;
if (cj_load_key(ctx, name) != 0)
return CJ_CB_ABORT;
if (cj_load_key(ctx, name) != 0)
return CJ_CB_ABORT;
@@
-291,6
+285,13
@@
static int cj_cb_string(void *ctx, const unsigned char *val, yajl_len_t len) {
return cj_cb_number(ctx, (const char *)val, len);
} /* int cj_cb_string */
return cj_cb_number(ctx, (const char *)val, len);
} /* int cj_cb_string */
+static int cj_cb_boolean(void *ctx, int boolVal) {
+ if (boolVal)
+ return cj_cb_number(ctx, "1", 1);
+ else
+ return cj_cb_number(ctx, "0", 1);
+} /* int cj_cb_boolean */
+
static int cj_cb_end(void *ctx) {
cj_t *db = (cj_t *)ctx;
memset(&db->state[db->depth], 0, sizeof(db->state[db->depth]));
static int cj_cb_end(void *ctx) {
cj_t *db = (cj_t *)ctx;
memset(&db->state[db->depth], 0, sizeof(db->state[db->depth]));
@@
-322,7
+323,7
@@
static int cj_cb_start_array(void *ctx) {
return CJ_CB_ABORT;
}
db->depth++;
return CJ_CB_ABORT;
}
db->depth++;
- db->state[db->depth].in_array =
1
;
+ db->state[db->depth].in_array =
true
;
db->state[db->depth].index = 0;
cj_load_key(db, "0");
db->state[db->depth].index = 0;
cj_load_key(db, "0");
@@
-332,7
+333,7
@@
static int cj_cb_start_array(void *ctx) {
static int cj_cb_end_array(void *ctx) {
cj_t *db = (cj_t *)ctx;
static int cj_cb_end_array(void *ctx) {
cj_t *db = (cj_t *)ctx;
- db->state[db->depth].in_array =
0
;
+ db->state[db->depth].in_array =
false
;
return cj_cb_end(ctx);
}
return cj_cb_end(ctx);
}
@@
-396,6
+397,7
@@
static void cj_free(void *arg) /* {{{ */
db->tree = NULL;
sfree(db->instance);
db->tree = NULL;
sfree(db->instance);
+ sfree(db->plugin_name);
sfree(db->host);
sfree(db->sock);
sfree(db->host);
sfree(db->sock);
@@
-578,7
+580,6
@@
static int cj_init_curl(cj_t *db) /* {{{ */
curl_easy_setopt(db->curl, CURLOPT_WRITEDATA, db);
curl_easy_setopt(db->curl, CURLOPT_USERAGENT, COLLECTD_USERAGENT);
curl_easy_setopt(db->curl, CURLOPT_ERRORBUFFER, db->curl_errbuf);
curl_easy_setopt(db->curl, CURLOPT_WRITEDATA, db);
curl_easy_setopt(db->curl, CURLOPT_USERAGENT, COLLECTD_USERAGENT);
curl_easy_setopt(db->curl, CURLOPT_ERRORBUFFER, db->curl_errbuf);
- curl_easy_setopt(db->curl, CURLOPT_URL, db->url);
curl_easy_setopt(db->curl, CURLOPT_FOLLOWLOCATION, 1L);
curl_easy_setopt(db->curl, CURLOPT_MAXREDIRS, 50L);
curl_easy_setopt(db->curl, CURLOPT_FOLLOWLOCATION, 1L);
curl_easy_setopt(db->curl, CURLOPT_MAXREDIRS, 50L);
@@
-621,9
+622,6
@@
static int cj_init_curl(cj_t *db) /* {{{ */
#ifdef HAVE_CURLOPT_TIMEOUT_MS
if (db->timeout >= 0)
curl_easy_setopt(db->curl, CURLOPT_TIMEOUT_MS, (long)db->timeout);
#ifdef HAVE_CURLOPT_TIMEOUT_MS
if (db->timeout >= 0)
curl_easy_setopt(db->curl, CURLOPT_TIMEOUT_MS, (long)db->timeout);
- else if (db->interval > 0)
- curl_easy_setopt(db->curl, CURLOPT_TIMEOUT_MS,
- (long)CDTIME_T_TO_MS(db->interval));
else
curl_easy_setopt(db->curl, CURLOPT_TIMEOUT_MS,
(long)CDTIME_T_TO_MS(plugin_get_interval()));
else
curl_easy_setopt(db->curl, CURLOPT_TIMEOUT_MS,
(long)CDTIME_T_TO_MS(plugin_get_interval()));
@@
-636,6
+634,7
@@
static int cj_config_add_url(oconfig_item_t *ci) /* {{{ */
{
cj_t *db;
int status = 0;
{
cj_t *db;
int status = 0;
+ cdtime_t interval = 0;
if ((ci->values_num != 1) || (ci->values[0].type != OCONFIG_TYPE_STRING)) {
WARNING("curl_json plugin: The `URL' block "
if ((ci->values_num != 1) || (ci->values[0].type != OCONFIG_TYPE_STRING)) {
WARNING("curl_json plugin: The `URL' block "
@@
-673,6
+672,8
@@
static int cj_config_add_url(oconfig_item_t *ci) /* {{{ */
if (strcasecmp("Instance", child->key) == 0)
status = cf_util_get_string(child, &db->instance);
if (strcasecmp("Instance", child->key) == 0)
status = cf_util_get_string(child, &db->instance);
+ else if (strcasecmp("Plugin", child->key) == 0)
+ status = cf_util_get_string(child, &db->plugin_name);
else if (strcasecmp("Host", child->key) == 0)
status = cf_util_get_string(child, &db->host);
else if (db->url && strcasecmp("User", child->key) == 0)
else if (strcasecmp("Host", child->key) == 0)
status = cf_util_get_string(child, &db->host);
else if (db->url && strcasecmp("User", child->key) == 0)
@@
-694,7
+695,7
@@
static int cj_config_add_url(oconfig_item_t *ci) /* {{{ */
else if (strcasecmp("Key", child->key) == 0)
status = cj_config_add_key(db, child);
else if (strcasecmp("Interval", child->key) == 0)
else if (strcasecmp("Key", child->key) == 0)
status = cj_config_add_key(db, child);
else if (strcasecmp("Interval", child->key) == 0)
- status = cf_util_get_cdtime(child, &
db->
interval);
+ status = cf_util_get_cdtime(child, &interval);
else if (strcasecmp("Timeout", child->key) == 0)
status = cf_util_get_int(child, &db->timeout);
else if (strcasecmp("Statistics", child->key) == 0) {
else if (strcasecmp("Timeout", child->key) == 0)
status = cf_util_get_int(child, &db->timeout);
else if (strcasecmp("Statistics", child->key) == 0) {
@@
-732,8
+733,7
@@
static int cj_config_add_url(oconfig_item_t *ci) /* {{{ */
cb_name = ssnprintf_alloc("curl_json-%s-%s", db->instance,
db->url ? db->url : db->sock);
cb_name = ssnprintf_alloc("curl_json-%s-%s", db->instance,
db->url ? db->url : db->sock);
- plugin_register_complex_read(/* group = */ NULL, cb_name, cj_read,
- /* interval = */ db->interval,
+ plugin_register_complex_read(/* group = */ NULL, cb_name, cj_read, interval,
&(user_data_t){
.data = db, .free_func = cj_free,
});
&(user_data_t){
.data = db, .free_func = cj_free,
});
@@
-806,19
+806,16
@@
static void cj_submit_impl(cj_t *db, cj_key_t *key, value_t *value) /* {{{ */
sstrncpy(vl.type_instance, key->instance, sizeof(vl.type_instance));
sstrncpy(vl.host, cj_host(db), sizeof(vl.host));
sstrncpy(vl.type_instance, key->instance, sizeof(vl.type_instance));
sstrncpy(vl.host, cj_host(db), sizeof(vl.host));
- sstrncpy(vl.plugin, "curl_json", sizeof(vl.plugin));
+ sstrncpy(vl.plugin, (db->plugin_name != NULL) ? db->plugin_name : "curl_json",
+ sizeof(vl.plugin));
sstrncpy(vl.plugin_instance, db->instance, sizeof(vl.plugin_instance));
sstrncpy(vl.type, key->type, sizeof(vl.type));
sstrncpy(vl.plugin_instance, db->instance, sizeof(vl.plugin_instance));
sstrncpy(vl.type, key->type, sizeof(vl.type));
- if (db->interval > 0)
- vl.interval = db->interval;
-
plugin_dispatch_values(&vl);
} /* }}} int cj_submit_impl */
static int cj_sock_perform(cj_t *db) /* {{{ */
{
plugin_dispatch_values(&vl);
} /* }}} int cj_submit_impl */
static int cj_sock_perform(cj_t *db) /* {{{ */
{
- char errbuf[1024];
struct sockaddr_un sa_unix = {
.sun_family = AF_UNIX,
};
struct sockaddr_un sa_unix = {
.sun_family = AF_UNIX,
};
@@
-829,8
+826,7
@@
static int cj_sock_perform(cj_t *db) /* {{{ */
return -1;
if (connect(fd, (struct sockaddr *)&sa_unix, sizeof(sa_unix)) < 0) {
ERROR("curl_json plugin: connect(%s) failed: %s",
return -1;
if (connect(fd, (struct sockaddr *)&sa_unix, sizeof(sa_unix)) < 0) {
ERROR("curl_json plugin: connect(%s) failed: %s",
- (db->sock != NULL) ? db->sock : "<null>",
- sstrerror(errno, errbuf, sizeof(errbuf)));
+ (db->sock != NULL) ? db->sock : "<null>", STRERRNO);
close(fd);
return -1;
}
close(fd);
return -1;
}
@@
-841,8
+837,7
@@
static int cj_sock_perform(cj_t *db) /* {{{ */
red = read(fd, buffer, sizeof(buffer));
if (red < 0) {
ERROR("curl_json plugin: read(%s) failed: %s",
red = read(fd, buffer, sizeof(buffer));
if (red < 0) {
ERROR("curl_json plugin: read(%s) failed: %s",
- (db->sock != NULL) ? db->sock : "<null>",
- sstrerror(errno, errbuf, sizeof(errbuf)));
+ (db->sock != NULL) ? db->sock : "<null>", STRERRNO);
close(fd);
return -1;
}
close(fd);
return -1;
}
@@
-858,12
+853,13
@@
static int cj_curl_perform(cj_t *db) /* {{{ */
int status;
long rc;
char *url;
int status;
long rc;
char *url;
- url = db->url;
+
+ curl_easy_setopt(db->curl, CURLOPT_URL, db->url);
status = curl_easy_perform(db->curl);
if (status != CURLE_OK) {
ERROR("curl_json plugin: curl_easy_perform failed with status %i: %s (%s)",
status = curl_easy_perform(db->curl);
if (status != CURLE_OK) {
ERROR("curl_json plugin: curl_easy_perform failed with status %i: %s (%s)",
- status, db->curl_errbuf, url);
+ status, db->curl_errbuf,
db->
url);
return -1;
}
if (db->stats != NULL)
return -1;
}
if (db->stats != NULL)