X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fmemcached.c;h=42882ae5082b34a1e99dbb387982a24684dac16a;hb=9506e5eb2f81f0182a75aa8105b88f89dc367c24;hp=62ac72a8029dac695632d1a26a3ad40f18ffeca9;hpb=01e2d29ebc5dec07daab935da3fcee5bb9c7d620;p=collectd.git diff --git a/src/memcached.c b/src/memcached.c index 62ac72a8..42882ae5 100644 --- a/src/memcached.c +++ b/src/memcached.c @@ -29,6 +29,7 @@ **/ #include "collectd.h" + #include "common.h" #include "plugin.h" #include "configfile.h" @@ -52,8 +53,9 @@ typedef struct memcached_s memcached_t; static _Bool memcached_have_instances = 0; -static void memcached_free (memcached_t *st) +static void memcached_free (void *arg) { + memcached_t *st = arg; if (st == NULL) return; @@ -66,10 +68,9 @@ static void memcached_free (memcached_t *st) static int memcached_connect_unix (memcached_t *st) { - struct sockaddr_un serv_addr; + struct sockaddr_un serv_addr = { 0 }; int fd; - memset (&serv_addr, 0, sizeof (serv_addr)); serv_addr.sun_family = AF_UNIX; sstrncpy (serv_addr.sun_path, st->socket, sizeof (serv_addr.sun_path)); @@ -101,24 +102,19 @@ static int memcached_connect_inet (memcached_t *st) const char *host; const char *port; - struct addrinfo ai_hints; - struct addrinfo *ai_list, *ai_ptr; + struct addrinfo *ai_list; int status; int fd = -1; - memset (&ai_hints, 0, sizeof (ai_hints)); - ai_hints.ai_flags = 0; -#ifdef AI_ADDRCONFIG - ai_hints.ai_flags |= AI_ADDRCONFIG; -#endif - ai_hints.ai_family = AF_UNSPEC; - ai_hints.ai_socktype = SOCK_STREAM; - ai_hints.ai_protocol = 0; - host = (st->host != NULL) ? st->host : MEMCACHED_DEF_HOST; port = (st->port != NULL) ? st->port : MEMCACHED_DEF_PORT; - ai_list = NULL; + struct addrinfo ai_hints = { + .ai_family = AF_UNSPEC, + .ai_flags = AI_ADDRCONFIG, + .ai_socktype = SOCK_STREAM + }; + status = getaddrinfo (host, port, &ai_hints, &ai_list); if (status != 0) { @@ -132,7 +128,7 @@ static int memcached_connect_inet (memcached_t *st) return (-1); } - for (ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next) + for (struct addrinfo *ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next) { /* create our socket descriptor */ fd = socket (ai_ptr->ai_family, ai_ptr->ai_socktype, ai_ptr->ai_protocol); @@ -244,21 +240,24 @@ static int memcached_query_daemon (char *buffer, size_t buffer_size, memcached_t static void memcached_init_vl (value_list_t *vl, memcached_t const *st) { + char const *host = st->host; + + /* Set vl->host to hostname_g, if: + * - Legacy mode is used. + * - "Socket" option is given (doc: "Host option is ignored"). + * - "Host" option is not provided. + * - "Host" option is set to "localhost" or "127.0.0.1". */ + if ((strcmp (st->name, "__legacy__") == 0) + || (st->socket != NULL) + || (st->host == NULL) + || (strcmp ("127.0.0.1", st->host) == 0) + || (strcmp ("localhost", st->host) == 0)) + host = hostname_g; + sstrncpy (vl->plugin, "memcached", sizeof (vl->plugin)); - if (strcmp (st->name, "__legacy__") == 0) /* legacy mode */ - { - sstrncpy (vl->host, hostname_g, sizeof (vl->host)); - } - else - { - if (st->socket != NULL) - sstrncpy (vl->host, hostname_g, sizeof (vl->host)); - else - sstrncpy (vl->host, - (st->host != NULL) ? st->host : MEMCACHED_DEF_HOST, - sizeof (vl->host)); + sstrncpy (vl->host, host, sizeof (vl->host)); + if (strcmp (st->name, "__legacy__") != 0) sstrncpy (vl->plugin_instance, st->name, sizeof (vl->plugin_instance)); - } } static void submit_derive (const char *type, const char *type_inst, @@ -550,13 +549,12 @@ static int memcached_read (user_data_t *user_data) static int memcached_add_read_callback (memcached_t *st) { - user_data_t ud; + user_data_t ud = { 0 }; char callback_name[3*DATA_MAX_NAME_LEN]; int status; - memset (&ud, 0, sizeof (ud)); ud.data = st; - ud.free_func = (void *) memcached_free; + ud.free_func = memcached_free; assert (st->name != NULL); ssnprintf (callback_name, sizeof (callback_name), "memcached/%s", st->name); @@ -580,7 +578,6 @@ static int memcached_add_read_callback (memcached_t *st) static int config_add_instance(oconfig_item_t *ci) { memcached_t *st; - int i; int status = 0; /* Disable automatic generation of default instance in the init callback. */ @@ -609,7 +606,7 @@ static int config_add_instance(oconfig_item_t *ci) } assert (st->name != NULL); - for (i = 0; i < ci->children_num; i++) + for (int i = 0; i < ci->children_num; i++) { oconfig_item_t *child = ci->children + i; @@ -646,9 +643,8 @@ static int memcached_config (oconfig_item_t *ci) { int status = 0; _Bool have_instance_block = 0; - int i; - for (i = 0; i < ci->children_num; i++) + for (int i = 0; i < ci->children_num; i++) { oconfig_item_t *child = ci->children + i;