X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fpowerdns.c;h=5ea1b098402c5e6c1c8231f72f0d1a74bbe96c8a;hb=6bf2e82bf5049af097beae4a8b7f086466520839;hp=ec337bf5829cfb296edb709830fd81d020dee500;hpb=b57d6e25aa792f0461aee4e5bd6d1838c478af50;p=collectd.git diff --git a/src/powerdns.c b/src/powerdns.c index ec337bf5..5ea1b098 100644 --- a/src/powerdns.c +++ b/src/powerdns.c @@ -37,7 +37,6 @@ #include #include #include -#include #include #ifndef UNIX_PATH_MAX @@ -298,7 +297,7 @@ static void submit (const char *plugin_instance, /* {{{ */ if (ds->ds_num != 1) { - ERROR ("powerdns plugin: type `%s' has %i data sources, " + ERROR ("powerdns plugin: type `%s' has %zu data sources, " "but I can only handle one.", type, ds->ds_num); return; @@ -462,6 +461,12 @@ static int powerdns_get_data_stream (list_item_t *item, /* {{{ */ timeout.tv_sec=5; timeout.tv_usec=0; status = setsockopt (sd, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof (timeout)); + if (status != 0) + { + FUNC_ERROR ("setsockopt"); + close (sd); + return (-1); + } status = connect (sd, (struct sockaddr *) &item->sockaddr, sizeof (item->sockaddr)); @@ -509,7 +514,6 @@ static int powerdns_get_data_stream (list_item_t *item, /* {{{ */ buffer[buffer_size] = 0; } /* while (42) */ close (sd); - sd = -1; if (status < 0) { @@ -645,12 +649,12 @@ static int powerdns_update_recursor_command (list_item_t *li) /* {{{ */ return (-1); } buffer[sizeof (buffer) - 1] = 0; - int i = strlen (buffer); - if (i < sizeof (buffer) - 2) + size_t len = strlen (buffer); + if (len < sizeof (buffer) - 2) { - buffer[i++] = ' '; - buffer[i++] = '\n'; - buffer[i++] = '\0'; + buffer[len++] = ' '; + buffer[len++] = '\n'; + buffer[len++] = '\0'; } } @@ -732,25 +736,6 @@ static int powerdns_read_recursor (list_item_t *item) /* {{{ */ return (0); } /* }}} int powerdns_read_recursor */ -static int powerdns_config_add_string (const char *name, /* {{{ */ - char **dest, - oconfig_item_t *ci) -{ - if ((ci->values_num != 1) || (ci->values[0].type != OCONFIG_TYPE_STRING)) - { - WARNING ("powerdns plugin: `%s' needs exactly one string argument.", - name); - return (-1); - } - - sfree (*dest); - *dest = strdup (ci->values[0].value.string); - if (*dest == NULL) - return (-1); - - return (0); -} /* }}} int powerdns_config_add_string */ - static int powerdns_config_add_collect (list_item_t *li, /* {{{ */ oconfig_item_t *ci) { @@ -861,7 +846,7 @@ static int powerdns_config_add_server (oconfig_item_t *ci) /* {{{ */ if (strcasecmp ("Collect", option->key) == 0) status = powerdns_config_add_collect (item, option); else if (strcasecmp ("Socket", option->key) == 0) - status = powerdns_config_add_string ("Socket", &socket_temp, option); + status = cf_util_get_string (option, &socket_temp); else { ERROR ("powerdns plugin: Option `%s' not allowed here.", option->key); @@ -901,12 +886,14 @@ static int powerdns_config_add_server (oconfig_item_t *ci) /* {{{ */ if (status != 0) { + sfree (socket_temp); sfree (item); return (-1); } DEBUG ("powerdns plugin: Add server: instance = %s;", item->instance); + sfree (socket_temp); return (0); } /* }}} int powerdns_config_add_server */