int status = 0;
int n;
#ifdef HAVE_LIST_ALL_DOMAINS
- virDomainPtr *domains;
+ virDomainPtr *domains = NULL;
n = virConnectListAllDomains(conn, &domains,
- VIR_CONNECT_GET_ALL_DOMAINS_STATS_PERSISTENT);
+ VIR_CONNECT_LIST_DOMAINS_PERSISTENT);
if (n < 0) {
VIRT_ERROR(conn, "reading list of persistent domains");
status = -1;
ERROR(PLUGIN_NAME " plugin: could not notify state of domain %s",
virDomainGetName(domains[i]));
}
+ virDomainFree(domains[i]);
}
sfree(domains);
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);
/* 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;
}
#ifndef HAVE_LIST_ALL_DOMAINS
sfree(domids);
#else
+ for (int i = 0; i < m; ++i)
+ virDomainFree(domains_inactive[i]);
sfree(domains_inactive);
#endif
return -1;
}
#ifdef HAVE_LIST_ALL_DOMAINS
+ for (int i = 0; i < n; ++i)
+ virDomainFree(domains[i]);
sfree(domains);
+ for (int i = 0; i < m; ++i)
+ virDomainFree(domains_inactive[i]);
sfree(domains_inactive);
#else
sfree(domids);