Merge remote-tracking branch 'origin/collectd-5.8'
[collectd.git] / src / ipmi.c
index 59710c3..6a72b2b 100644 (file)
@@ -387,6 +387,10 @@ static int sensor_list_add(c_ipmi_instance_t *st, ipmi_sensor_t *sensor) {
         ipmi_sensor_get_sensor_direction(sensor),
         ipmi_sensor_get_event_support(sensor));
 
+  /* Both `ignorelist' and `sensor_name_ptr' may be NULL. */
+  if (ignorelist_match(st->ignorelist, sensor_name_ptr) != 0)
+    return 0;
+
   /* FIXME: Use rate unit or base unit to scale the value */
 
   sensor_type = ipmi_sensor_get_sensor_type(sensor);
@@ -774,11 +778,6 @@ entity_sensor_update_handler(enum ipmi_update_e op,
                              ipmi_entity_t __attribute__((unused)) * entity,
                              ipmi_sensor_t *sensor, void *user_data) {
   c_ipmi_instance_t *st = user_data;
-  char sensor_name[DATA_MAX_NAME_LEN] = {0};
-
-  sensor_get_name(sensor, sensor_name, sizeof(sensor_name));
-  if (ignorelist_match(st->ignorelist, sensor_name) != 0)
-    return; /* Ignore - sensor on ignore list */
 
   if ((op == IPMI_ADDED) || (op == IPMI_CHANGED)) {
     /* Will check for duplicate entries.. */
@@ -796,9 +795,11 @@ entity_sensor_update_handler(enum ipmi_update_e op,
         status = ipmi_sensor_add_discrete_event_handler(
             sensor, sensor_discrete_event_handler, st);
 
-      if (status)
-        ERROR("Unable to add sensor %s event handler, status: %d", sensor_name,
-              status);
+      if (status) {
+        char buf[DATA_MAX_NAME_LEN] = {0};
+        sensor_get_name(sensor, buf, sizeof(buf));
+        ERROR("Unable to add sensor %s event handler, status: %d", buf, status);
+      }
     }
   } else if (op == IPMI_DELETED) {
     sensor_list_remove(st, sensor);