#define _GNU_SOURCE 1
#include <poll.h>
+#include <stdbool.h>
#include <stdio.h>
#include <inttypes.h>
#include <systemd/sd-bus.h>
/* const char* path; */
/* path = NULL; */
uint8_t type;
+ bool has_failed = false;
struct sf_event_data sf_ev_data = {};
struct faultd_event *ev;
}
rc = sd_bus_message_exit_container(m);
log_debug(" %s:%s", key, value);
+
if (strcmp("failed", value) == 0) {
- ; /* XXX */
+ has_failed = true;
}
} else if (strncmp("ConditionTimestamp", key, 18) == 0) {
rc = 0;
}
- systemd_service_init(sd_bus_message_get_path(m), &sf_ev_data.service);
+ if (has_failed) {
+ systemd_service_init(sd_bus_message_get_path(m), &sf_ev_data.service);
- rc = faultd_event_create(SERVICE_FAILED_EVENT_ID, &sf_ev_data, &ev);
- if (rc) {
- log_error_errno(rc, "Unable to allocate an event: %m.");
- systemd_service_cleanup(&sf_ev_data.service);
- goto finish;
- }
+ rc = faultd_event_create(SERVICE_FAILED_EVENT_ID, &sf_ev_data, &ev);
+ if (rc) {
+ log_error_errno(rc, "Unable to allocate an event: %m.");
+ systemd_service_cleanup(&sf_ev_data.service);
+ goto finish;
+ }
- rc = event_processor_report_event(ev);
- if (rc) {
- log_error_errno(rc, "Unable to report event: %m");
- faultd_event_unref(ev);
+ rc = event_processor_report_event(ev);
+ if (rc) {
+ log_error_errno(rc, "Unable to report event: %m");
+ faultd_event_unref(ev);
+ }
}
finish:
return rc;