ping plugin: Let start_thread() return gracefully when thread is already running.
authorFlorian Forster <octo@collectd.org>
Sat, 6 Aug 2016 16:22:56 +0000 (18:22 +0200)
committerFlorian Forster <octo@collectd.org>
Sat, 6 Aug 2016 16:22:56 +0000 (18:22 +0200)
Signaling an error caused the init function to signal an error, causing
the read callback to be unregistered on systems where init is called
more than once.

Fixes: #869

src/ping.c

index ecbbd9d..fca730f 100644 (file)
@@ -374,7 +374,7 @@ static int start_thread (void) /* {{{ */
   if (ping_thread_loop != 0)
   {
     pthread_mutex_unlock (&ping_lock);
-    return (-1);
+    return (0);
   }
 
   ping_thread_loop = 1;
@@ -388,7 +388,7 @@ static int start_thread (void) /* {{{ */
     pthread_mutex_unlock (&ping_lock);
     return (-1);
   }
-    
+
   pthread_mutex_unlock (&ping_lock);
   return (0);
 } /* }}} int start_thread */
@@ -439,10 +439,7 @@ static int ping_init (void) /* {{{ */
         "Will use a timeout of %gs.", ping_timeout);
   }
 
-  if (start_thread () != 0)
-    return (-1);
-
-  return (0);
+  return (start_thread ());
 } /* }}} int ping_init */
 
 static int config_set_string (const char *name, /* {{{ */