Code

dbi utils: Use the new _r interface.
[sysdb.git] / src / backend / mk-livestatus.c
index bf45da6fdd35df6d3170ed4a4ebafbc1b513b49a..e631ae7525acee7c8426563ed51c8531f5825a0f 100644 (file)
  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+#if HAVE_CONFIG_H
+#      include "config.h"
+#endif /* HAVE_CONFIG_H */
+
 #include "sysdb.h"
 #include "core/plugin.h"
 #include "core/store.h"
@@ -142,6 +146,17 @@ sdb_livestatus_init(sdb_object_t *user_data)
        return 0;
 } /* sdb_livestatus_init */
 
+static int
+sdb_livestatus_shutdown(sdb_object_t *user_data)
+{
+       if (! user_data)
+               return -1;
+
+       sdb_unixsock_client_destroy(SDB_OBJ_WRAPPER(user_data)->data);
+       SDB_OBJ_WRAPPER(user_data)->data = NULL;
+       return 0;
+} /* sdb_livestatus_shutdown */
+
 static int
 sdb_livestatus_collect(sdb_object_t *user_data)
 {
@@ -275,6 +290,7 @@ sdb_livestatus_config_instance(oconfig_item_t *ci)
        }
 
        sdb_plugin_register_init(cb_name, sdb_livestatus_init, user_data);
+       sdb_plugin_register_shutdown(cb_name, sdb_livestatus_shutdown, user_data);
        sdb_plugin_register_collector(cb_name, sdb_livestatus_collect,
                        /* interval */ NULL, user_data);
 
@@ -288,6 +304,9 @@ sdb_livestatus_config(oconfig_item_t *ci)
 {
        int i;
 
+       if (! ci) /* nothing to do to deconfigure this plugin */
+               return 0;
+
        for (i = 0; i < ci->children_num; ++i) {
                oconfig_item_t *child = ci->children + i;