mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-01 17:35:17 +00:00
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:
parent
2d4d657695
commit
438fa79358
@ -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);
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user