connection: Handle errors when deregistering events on close (bz 1069351)

Otherwise this interrupts the close/cleanup routine, and the connection
never appears to disconnect in the UI. This causes error dialog spamming
when libvirtd goes down.
This commit is contained in:
Cole Robinson 2014-03-10 09:33:04 -04:00
parent cfc52051b7
commit 081e34715f
1 changed files with 17 additions and 8 deletions

View File

@ -929,16 +929,25 @@ class vmmConnection(vmmGObject):
def close(self):
def cleanup(devs):
for dev in devs.values():
dev.cleanup()
try:
dev.cleanup()
except:
logging.debug("Failed to cleanup %s", exc_info=True)
if not self._backend.is_closed():
if self._domain_cb_id is not None:
self._backend.domainEventDeregisterAny(self._domain_cb_id)
self._domain_cb_id = None
try:
if not self._backend.is_closed():
if self._domain_cb_id is not None:
self._backend.domainEventDeregisterAny(
self._domain_cb_id)
self._domain_cb_id = None
if self._network_cb_id is not None:
self._backend.networkEventDeregisterAny(self._network_cb_id)
self._network_cb_id = None
if self._network_cb_id is not None:
self._backend.networkEventDeregisterAny(
self._network_cb_id)
self._network_cb_id = None
except:
logging.debug("Failed to deregister events in conn cleanup",
exc_info=True)
self._backend.close()
self.record = []