X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fping.c;h=03dea6db3daac0d3d376c435ab0a2afbd25b7d20;hb=22ea26dfea00f13829a4b85af6e5f3fd754c1f1f;hp=e3608c384c590ebeafc419a10b3ba844fbb5d592;hpb=79963d13c1884d1d92667cc502ad20758b084a12;p=collectd.git diff --git a/src/ping.c b/src/ping.c index e3608c38..03dea6db 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,8 +289,8 @@ 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) { @@ -305,7 +303,7 @@ static void *ping_thread(void *arg) /* {{{ */ 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)); @@ -359,7 +357,7 @@ static int start_thread(void) /* {{{ */ ping_thread_loop = 1; ping_thread_error = 0; status = plugin_thread_create(&ping_thread_id, /* attr = */ NULL, ping_thread, - /* arg = */ (void *)0); + /* arg = */ (void *)0, "ping"); if (status != 0) { ping_thread_loop = 0; ERROR("ping plugin: Starting thread failed."); @@ -554,16 +552,11 @@ static int ping_config(const char *key, const char *value) /* {{{ */ static void submit(const char *host, const char *type, /* {{{ */ gauge_t value) { - value_t values[1]; value_list_t vl = VALUE_LIST_INIT; - values[0].gauge = value; - - vl.values = values; + vl.values = &(value_t){.gauge = value}; vl.values_len = 1; - sstrncpy(vl.host, hostname_g, sizeof(vl.host)); sstrncpy(vl.plugin, "ping", sizeof(vl.plugin)); - sstrncpy(vl.plugin_instance, "", sizeof(vl.plugin_instance)); sstrncpy(vl.type_instance, host, sizeof(vl.type_instance)); sstrncpy(vl.type, type, sizeof(vl.type));