if (n > 0) {
int *domids;
/* Get list of domains. */
- domids = malloc(sizeof(*domids) * n);
+ domids = calloc(n, sizeof(*domids));
if (domids == NULL) {
- ERROR(PLUGIN_NAME " plugin: malloc failed.");
+ ERROR(PLUGIN_NAME " plugin: calloc failed.");
return -1;
}
n = virConnectListDomains(conn, domids, n);
continue;
}
status = virDomainGetInfo(dom, &info);
- if (status != 0) {
+ if (status == 0)
+ /* virDomainGetState is not available. Submit 0, which corresponds to
+ * unknown reason. */
+ domain_state_submit_notif(dom, info.state, 0);
+ else
ERROR(PLUGIN_NAME " plugin: virDomainGetInfo failed with status %i.",
status);
- continue;
- }
- /* virDomainGetState is not available. Submit 0, which corresponds to
- * unknown reason. */
- domain_state_submit_notif(dom, info.state, 0);
+
+ virDomainFree(dom);
}
sfree(domids);
}
/* Need to refresh domain or device lists? */
if ((last_refresh == (time_t)0) ||
((interval > 0) && ((last_refresh + interval) <= t))) {
- if (inst->id == 0 && persistent_notification) {
- int status = persistent_domains_state_notification();
- if (status != 0)
- DEBUG(PLUGIN_NAME " plugin: persistent_domains_state_notifications "
- "returned with status %i",
- status);
- }
if (refresh_lists(inst) != 0) {
if (inst->id == 0) {
if (!persistent_notification)
last_refresh = t;
}
+ /* persistent domains state notifications are handled by instance 0 */
+ if (inst->id == 0 && persistent_notification) {
+ int status = persistent_domains_state_notification();
+ if (status != 0)
+ DEBUG(PLUGIN_NAME " plugin: persistent_domains_state_notifications "
+ "returned with status %i",
+ status);
+ }
+
#if COLLECT_DEBUG
for (int i = 0; i < state->nr_domains; ++i)
DEBUG(PLUGIN_NAME " plugin: domain %s",
int *domids;
/* Get list of domains. */
- domids = malloc(sizeof(*domids) * n);
+ domids = calloc(n, sizeof(*domids));
if (domids == NULL) {
- ERROR(PLUGIN_NAME " plugin: malloc failed.");
+ ERROR(PLUGIN_NAME " plugin: calloc failed.");
return -1;
}