src/plugin.c: Move the error-checking code up.
[collectd.git] / src / plugin.c
index a298d35..eb98a7a 100644 (file)
@@ -1,6 +1,6 @@
 /**
  * collectd - src/plugin.c
- * Copyright (C) 2005-2010  Florian octo Forster
+ * Copyright (C) 2005-2011  Florian octo Forster
  *
  * This program is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License as published by the
@@ -728,6 +728,17 @@ static int plugin_insert_read (read_func_t *rf)
                }
        }
 
+       le = llist_search (read_list, rf->rf_name);
+       if (le != NULL)
+       {
+               pthread_mutex_unlock (&read_lock);
+               WARNING ("The read function \"%s\" is already registered. "
+                               "Check for duplicate \"LoadPlugin\" lines "
+                               "in your configuration!",
+                               rf->rf_name);
+               return (EINVAL);
+       }
+
        le = llentry_create (rf->rf_name, rf);
        if (le == NULL)
        {
@@ -1358,7 +1369,7 @@ int plugin_dispatch_missing (const value_list_t *vl) /* {{{ */
     cf = le->value;
     callback = cf->cf_callback;
 
-    status = (*callback) (vl);
+    status = (*callback) (vl, &cf->cf_udata);
     if (status != 0)
     {
       if (status < 0)