Since I don't have an email to reply-to, here is the link:
https://www.redhat.com/archives/libvirt-cim/2012-December/msg00039.html
In get_diskpool_config():
* Rather than use the "racy" NumOfStoragePools and ListStoragePools, why
not use virConnectListAllStoragePools() passing the "Active" flag for
all active pools only?
* You may even want to consider keeping the returned virStoragePoolPtr
structures around..
I also imagine the other objects (networks and domains) could use the
similar calls. I guess the answer somewhat depends on what is the
minimum version of libvirt that needs to be supported.
But if you "have" to stay with the current model...
* The return 'names[i]' is something you'd have to free() anyway, so
rather than strdup(names[i]), just take it when setting pools[i].tag and
set names[i] = NULL; That avoids an error path.
John