X-Git-Url: https://git.octo.it/?p=collectd.git;a=blobdiff_plain;f=src%2Fping.c;h=1ffd72b7efbcdadea2d6d490faf7c9c87ecc97df;hp=6e056e4640bdd1caf701654a8127de5915b55adf;hb=77ca1a45bab2f6adf9301723d0db68e5813a6d98;hpb=b165cd13cd30a30ac830df1f6f6fbd52474a6f64 diff --git a/src/ping.c b/src/ping.c index 6e056e46..1ffd72b7 100644 --- a/src/ping.c +++ b/src/ping.c @@ -81,11 +81,11 @@ static double ping_interval = 1.0; static double ping_timeout = 0.9; static int ping_max_missed = -1; +static pthread_mutex_t ping_lock = PTHREAD_MUTEX_INITIALIZER; +static pthread_cond_t ping_cond = PTHREAD_COND_INITIALIZER; static int ping_thread_loop = 0; static int ping_thread_error = 0; static pthread_t ping_thread_id; -static pthread_mutex_t ping_lock = PTHREAD_MUTEX_INITIALIZER; -static pthread_cond_t ping_cond = PTHREAD_COND_INITIALIZER; static const char *config_keys[] = {"Host", "SourceAddress", #ifdef HAVE_OPING_1_3 @@ -224,8 +224,6 @@ static int ping_dispatch_all(pingobj_t *pingobj) /* {{{ */ static void *ping_thread(void *arg) /* {{{ */ { - pingobj_t *pingobj = NULL; - struct timeval tv_begin; struct timeval tv_end; struct timespec ts_wait; @@ -235,11 +233,10 @@ static void *ping_thread(void *arg) /* {{{ */ c_complain_t complaint = C_COMPLAIN_INIT_STATIC; - pthread_mutex_lock(&ping_lock); - - pingobj = ping_construct(); + pingobj_t *pingobj = ping_construct(); if (pingobj == NULL) { ERROR("ping plugin: ping_construct failed."); + pthread_mutex_lock(&ping_lock); ping_thread_error = 1; pthread_mutex_unlock(&ping_lock); return (void *)-1; @@ -276,6 +273,7 @@ static void *ping_thread(void *arg) /* {{{ */ if (count == 0) { ERROR("ping plugin: No host could be added to ping object. Giving up."); + pthread_mutex_lock(&ping_lock); ping_thread_error = 1; pthread_mutex_unlock(&ping_lock); return (void *)-1; @@ -291,21 +289,19 @@ static void *ping_thread(void *arg) /* {{{ */ ts_int.tv_nsec = (long)(temp_nsec * 1000000000L); } + pthread_mutex_lock(&ping_lock); while (ping_thread_loop > 0) { - int status; _Bool send_successful = 0; if (gettimeofday(&tv_begin, NULL) < 0) { - char errbuf[1024]; - ERROR("ping plugin: gettimeofday failed: %s", - sstrerror(errno, errbuf, sizeof(errbuf))); + ERROR("ping plugin: gettimeofday failed: %s", STRERRNO); ping_thread_error = 1; break; } pthread_mutex_unlock(&ping_lock); - status = ping_send(pingobj); + int status = ping_send(pingobj); if (status < 0) { c_complain(LOG_ERR, &complaint, "ping plugin: ping_send failed: %s", ping_get_error(pingobj)); @@ -323,9 +319,7 @@ static void *ping_thread(void *arg) /* {{{ */ (void)ping_dispatch_all(pingobj); if (gettimeofday(&tv_end, NULL) < 0) { - char errbuf[1024]; - ERROR("ping plugin: gettimeofday failed: %s", - sstrerror(errno, errbuf, sizeof(errbuf))); + ERROR("ping plugin: gettimeofday failed: %s", STRERRNO); ping_thread_error = 1; break; } @@ -436,9 +430,8 @@ static int config_set_string(const char *name, /* {{{ */ tmp = strdup(value); if (tmp == NULL) { - char errbuf[1024]; ERROR("ping plugin: Setting `%s' to `%s' failed: strdup failed: %s", name, - value, sstrerror(errno, errbuf, sizeof(errbuf))); + value, STRERRNO); return 1; } @@ -456,18 +449,14 @@ static int ping_config(const char *key, const char *value) /* {{{ */ hl = malloc(sizeof(*hl)); if (hl == NULL) { - char errbuf[1024]; - ERROR("ping plugin: malloc failed: %s", - sstrerror(errno, errbuf, sizeof(errbuf))); + ERROR("ping plugin: malloc failed: %s", STRERRNO); return 1; } host = strdup(value); if (host == NULL) { - char errbuf[1024]; sfree(hl); - ERROR("ping plugin: strdup failed: %s", - sstrerror(errno, errbuf, sizeof(errbuf))); + ERROR("ping plugin: strdup failed: %s", STRERRNO); return 1; } @@ -532,7 +521,7 @@ static int ping_config(const char *key, const char *value) /* {{{ */ } /* }}} for (i = 0; i < size; i++) */ ping_data[size] = 0; } else - WARNING("ping plugin: Ignoring invalid Size %zu.", size); + WARNING("ping plugin: Ignoring invalid Size %" PRIsz ".", size); } else if (strcasecmp(key, "Timeout") == 0) { double tmp;