daemon: Don't blindly unregister domain events

The daemon will attempt to unregister domain events on client disconnect,
even if no events were ever registered. This raises an unneeded error.

Track in the qemu_client structure if events have been registered, and
check this when performing cleanup.
This commit is contained in:
Cole Robinson 2010-01-13 13:21:30 -05:00
parent 2d4d657695
commit 438fa79358
3 changed files with 6 additions and 1 deletions

View File

@ -1447,7 +1447,7 @@ void qemudDispatchClientFailure(struct qemud_client *client) {
}
/* Deregister event delivery callback */
if(client->conn) {
if (client->conn && client->domain_events_registered) {
DEBUG0("Deregistering to relay remote events");
virConnectDomainEventDeregister(client->conn, remoteRelayDomainEvent);
}

View File

@ -177,6 +177,7 @@ struct qemud_client {
int watch;
int readonly:1;
int closing:1;
int domain_events_registered:1;
struct sockaddr_storage addr;
socklen_t addrlen;

View File

@ -4775,6 +4775,8 @@ remoteDispatchDomainEventsRegister (struct qemud_server *server ATTRIBUTE_UNUSED
if (ret)
ret->cb_registered = 1;
client->domain_events_registered = 1;
return 0;
}
@ -4796,6 +4798,8 @@ remoteDispatchDomainEventsDeregister (struct qemud_server *server ATTRIBUTE_UNUS
if (ret)
ret->cb_registered = 0;
client->domain_events_registered = 0;
return 0;
}