Merge branch 'collectd-5.8'
authorFlorian Forster <octo@collectd.org>
Tue, 21 Nov 2017 09:39:44 +0000 (10:39 +0100)
committerFlorian Forster <octo@collectd.org>
Tue, 21 Nov 2017 09:39:44 +0000 (10:39 +0100)
1  2 
src/table.c
src/utils_ovs.c
src/write_graphite.c
src/write_sensu.c
src/write_tsdb.c

diff --combined src/table.c
@@@ -154,7 -154,8 +154,7 @@@ static int tbl_config_append_array_i(ch
  
    tmp = realloc(*var, ((*len) + num) * sizeof(**var));
    if (NULL == tmp) {
 -    char errbuf[1024];
 -    log_err("realloc failed: %s.", sstrerror(errno, errbuf, sizeof(errbuf)));
 +    log_err("realloc failed: %s.", STRERRNO);
      return -1;
    }
    *var = tmp;
  } /* tbl_config_append_array_s */
  
  static int tbl_config_result(tbl_t *tbl, oconfig_item_t *ci) {
-   tbl_result_t *res;
-   int status = 0;
    if (0 != ci->values_num) {
      log_err("<Result> does not expect any arguments.");
      return 1;
    }
  
-   res = realloc(tbl->results, (tbl->results_num + 1) * sizeof(*tbl->results));
+   tbl_result_t *res =
+       realloc(tbl->results, (tbl->results_num + 1) * sizeof(*tbl->results));
    if (res == NULL) {
 -    char errbuf[1024];
 -    log_err("realloc failed: %s.", sstrerror(errno, errbuf, sizeof(errbuf)));
 +    log_err("realloc failed: %s.", STRERRNO);
      return -1;
    }
  
    tbl->results = res;
-   ++tbl->results_num;
  
-   res = tbl->results + tbl->results_num - 1;
+   res = tbl->results + tbl->results_num;
    tbl_result_setup(res);
  
    for (int i = 0; i < ci->children_num; ++i) {
                 c->key);
    }
  
+   int status = 0;
    if (NULL == res->type) {
-     log_err("No \"Type\" option specified for <Result> "
-             "in table \"%s\".",
+     log_err("No \"Type\" option specified for <Result> in table \"%s\".",
              tbl->file);
      status = 1;
    }
  
    if (NULL == res->values) {
-     log_err("No \"ValuesFrom\" option specified for <Result> "
-             "in table \"%s\".",
+     log_err("No \"ValuesFrom\" option specified for <Result> in table \"%s\".",
              tbl->file);
      status = 1;
    }
  
    if (0 != status) {
      tbl_result_clear(res);
-     --tbl->results_num;
      return status;
    }
+   tbl->results_num++;
    return 0;
  } /* tbl_config_result */
  
  static int tbl_config_table(oconfig_item_t *ci) {
-   tbl_t *tbl;
-   int status = 0;
    if ((1 != ci->values_num) || (OCONFIG_TYPE_STRING != ci->values[0].type)) {
      log_err("<Table> expects a single string argument.");
      return 1;
    }
  
-   tbl = realloc(tables, (tables_num + 1) * sizeof(*tables));
+   tbl_t *tbl = realloc(tables, (tables_num + 1) * sizeof(*tables));
    if (NULL == tbl) {
 -    char errbuf[1024];
 -    log_err("realloc failed: %s.", sstrerror(errno, errbuf, sizeof(errbuf)));
 +    log_err("realloc failed: %s.", STRERRNO);
      return -1;
    }
  
    tables = tbl;
-   ++tables_num;
  
-   tbl = tables + tables_num - 1;
+   tbl = tables + tables_num;
    tbl_setup(tbl, ci->values[0].value.string);
  
    for (size_t i = 0; i < ((size_t)ci->children_num); ++i) {
                 c->key, tbl->file);
    }
  
+   int status = 0;
    if (NULL == tbl->sep) {
      log_err("Table \"%s\" does not specify any separator.", tbl->file);
      status = 1;
    }
  
    if (NULL == tbl->results) {
+     assert(tbl->results_num == 0);
      log_err("Table \"%s\" does not specify any (valid) results.", tbl->file);
      status = 1;
    }
  
    if (0 != status) {
      tbl_clear(tbl);
-     --tables_num;
      return status;
    }
  
        if (res->values[j] > tbl->max_colnum)
          tbl->max_colnum = res->values[j];
    }
+   tables_num++;
    return 0;
  } /* tbl_config_table */
  
@@@ -446,7 -443,9 +440,7 @@@ static int tbl_read_table(tbl_t *tbl) 
  
    fh = fopen(tbl->file, "r");
    if (NULL == fh) {
 -    char errbuf[1024];
 -    log_err("Failed to open file \"%s\": %s.", tbl->file,
 -            sstrerror(errno, errbuf, sizeof(errbuf)));
 +    log_err("Failed to open file \"%s\": %s.", tbl->file, STRERRNO);
      return -1;
    }
  
    }
  
    if (0 != ferror(fh)) {
 -    char errbuf[1024];
 -    log_err("Failed to read from file \"%s\": %s.", tbl->file,
 -            sstrerror(errno, errbuf, sizeof(errbuf)));
 +    log_err("Failed to read from file \"%s\": %s.", tbl->file, STRERRNO);
      fclose(fh);
      return -1;
    }
diff --combined src/utils_ovs.c
@@@ -750,14 -750,17 +750,14 @@@ static void ovs_db_reconnect(ovs_db_t *
    }
    /* try to connect to the server */
    for (struct addrinfo *rp = result; rp != NULL; rp = rp->ai_next) {
 -    char errbuff[OVS_ERROR_BUFF_SIZE];
      int sock = socket(rp->ai_family, rp->ai_socktype, rp->ai_protocol);
      if (sock < 0) {
 -      sstrerror(errno, errbuff, sizeof(errbuff));
 -      OVS_DEBUG("socket(): %s", errbuff);
 +      OVS_DEBUG("socket(): %s", STRERRNO);
        continue;
      }
      if (connect(sock, rp->ai_addr, rp->ai_addrlen) < 0) {
        close(sock);
 -      sstrerror(errno, errbuff, sizeof(errbuff));
 -      OVS_DEBUG("connect(): %s [family=%d]", errbuff, rp->ai_family);
 +      OVS_DEBUG("connect(): %s [family=%d]", STRERRNO, rp->ai_family);
      } else {
        /* send notification to event thread */
        ovs_db_event_post(pdb, OVS_DB_EVENT_CONN_ESTABLISHED);
@@@ -792,10 -795,12 +792,10 @@@ static void *ovs_poll_worker(void *arg
  
    /* poll data */
    while (ovs_db_poll_is_running(pdb)) {
 -    char errbuff[OVS_ERROR_BUFF_SIZE];
      poll_fd.fd = pdb->sock;
      int poll_ret = poll(&poll_fd, 1, /* ms */ OVS_DB_POLL_TIMEOUT * 1000);
      if (poll_ret < 0) {
 -      sstrerror(errno, errbuff, sizeof(errbuff));
 -      OVS_ERROR("poll(): %s", errbuff);
 +      OVS_ERROR("poll(): %s", STRERRNO);
        break;
      } else if (poll_ret == 0) {
        OVS_DEBUG("poll(): timeout");
        char buff[OVS_DB_POLL_READ_BLOCK_SIZE];
        ssize_t nbytes = recv(poll_fd.fd, buff, sizeof(buff), 0);
        if (nbytes < 0) {
 -        sstrerror(errno, errbuff, sizeof(errbuff));
 -        OVS_ERROR("recv(): %s", errbuff);
 +        OVS_ERROR("recv(): %s", STRERRNO);
          /* read error? Try to reconnect */
          close(poll_fd.fd);
          continue;
@@@ -997,9 -1003,10 +997,10 @@@ ovs_db_t *ovs_db_init(const char *node
      return NULL;
  
    /* allocate db data & fill it */
-   ovs_db_t *pdb = pdb = calloc(1, sizeof(*pdb));
+   ovs_db_t *pdb = calloc(1, sizeof(*pdb));
    if (pdb == NULL)
      return NULL;
+   pdb->sock = -1;
  
    /* store the OVS DB address */
    sstrncpy(pdb->node, node, sizeof(pdb->node));
    }
  
    /* init polling thread */
-   pdb->sock = -1;
    if (ovs_db_poll_thread_init(pdb) < 0) {
      ovs_db_destroy(pdb);
      return NULL;
diff --combined src/write_graphite.c
@@@ -156,9 -156,11 +156,9 @@@ static int wg_send_buffer(struct wg_cal
    status = swrite(cb->sock_fd, cb->send_buf, strlen(cb->send_buf));
    if (status != 0) {
      if (cb->log_send_errors) {
 -      char errbuf[1024];
        ERROR("write_graphite plugin: send to %s:%s (%s) failed with status %zi "
              "(%s)",
 -            cb->node, cb->service, cb->protocol, status,
 -            sstrerror(errno, errbuf, sizeof(errbuf)));
 +            cb->node, cb->service, cb->protocol, status, STRERRNO);
      }
  
      close(cb->sock_fd);
@@@ -236,7 -238,9 +236,7 @@@ static int wg_callback_init(struct wg_c
      cb->sock_fd =
          socket(ai_ptr->ai_family, ai_ptr->ai_socktype, ai_ptr->ai_protocol);
      if (cb->sock_fd < 0) {
 -      char errbuf[1024];
 -      snprintf(connerr, sizeof(connerr), "failed to open socket: %s",
 -               sstrerror(errno, errbuf, sizeof(errbuf)));
 +      snprintf(connerr, sizeof(connerr), "failed to open socket: %s", STRERRNO);
        continue;
      }
  
  
      status = connect(cb->sock_fd, ai_ptr->ai_addr, ai_ptr->ai_addrlen);
      if (status != 0) {
 -      char errbuf[1024];
 -      snprintf(connerr, sizeof(connerr), "failed to connect to remote "
 -                                         "host: %s",
 -               sstrerror(errno, errbuf, sizeof(errbuf)));
 +      snprintf(connerr, sizeof(connerr), "failed to connect to remote host: %s",
 +               STRERRNO);
        close(cb->sock_fd);
        cb->sock_fd = -1;
        continue;
    freeaddrinfo(ai_list);
  
    if (cb->sock_fd < 0) {
 -    if (connerr[0] == '\0')
 -      /* this should not happen but try to get a message anyway */
 -      sstrerror(errno, connerr, sizeof(connerr));
      c_complain(LOG_ERR, &cb->init_complaint,
                 "write_graphite plugin: Connecting to %s:%s via %s failed. "
                 "The last error was: %s",
@@@ -303,6 -312,7 +303,7 @@@ static void wg_callback_free(void *data
    sfree(cb->prefix);
    sfree(cb->postfix);
  
+   pthread_mutex_unlock(&cb->send_lock);
    pthread_mutex_destroy(&cb->send_lock);
  
    sfree(cb);
diff --combined src/write_sensu.c
@@@ -31,6 -31,7 +31,7 @@@
  #include "common.h"
  #include "plugin.h"
  #include "utils_cache.h"
  #include <arpa/inet.h>
  #include <errno.h>
  #include <inttypes.h>
@@@ -879,9 -880,11 +880,9 @@@ static int sensu_send_msg(struct sensu_
    sensu_close_socket(host);
  
    if (status != 0) {
 -    char errbuf[1024];
      ERROR("write_sensu plugin: Sending to Sensu at %s:%s failed: %s",
            (host->node != NULL) ? host->node : SENSU_HOST,
 -          (host->service != NULL) ? host->service : SENSU_PORT,
 -          sstrerror(errno, errbuf, sizeof(errbuf)));
 +          (host->service != NULL) ? host->service : SENSU_PORT, STRERRNO);
      return -1;
    }
  
@@@ -996,7 -999,10 +997,10 @@@ static void sensu_free(void *p) /* {{{ 
    sfree(host->separator);
    free_str_list(&(host->metric_handlers));
    free_str_list(&(host->notification_handlers));
+   pthread_mutex_unlock(&host->lock);
    pthread_mutex_destroy(&host->lock);
    sfree(host);
  } /* }}} void sensu_free */
  
diff --combined src/write_tsdb.c
@@@ -112,8 -112,9 +112,8 @@@ static int wt_send_buffer(struct wt_cal
  
    status = swrite(cb->sock_fd, cb->send_buf, strlen(cb->send_buf));
    if (status != 0) {
 -    char errbuf[1024];
      ERROR("write_tsdb plugin: send failed with status %zi (%s)", status,
 -          sstrerror(errno, errbuf, sizeof(errbuf)));
 +          STRERRNO);
  
      close(cb->sock_fd);
      cb->sock_fd = -1;
@@@ -241,9 -242,10 +241,9 @@@ static int wt_callback_init(struct wt_c
    }
  
    if (cb->sock_fd < 0) {
 -    char errbuf[1024];
      ERROR("write_tsdb plugin: Connecting to %s:%s failed. "
            "The last error was: %s",
 -          node, service, sstrerror(errno, errbuf, sizeof(errbuf)));
 +          node, service, STRERRNO);
      return -1;
    }
  
@@@ -277,6 -279,7 +277,7 @@@ static void wt_callback_free(void *data
    sfree(cb->service);
    sfree(cb->host_tags);
  
+   pthread_mutex_unlock(&cb->send_lock);
    pthread_mutex_destroy(&cb->send_lock);
  
    sfree(cb);