mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-21 20:15:17 +00:00
daemon: fixup refcounting in close callback handling
remoteDispatchConnectCloseCallbackRegister introduced in f484310a has problems. It refcounts network client object and in case of NOOP driver operations for registering/unregistering close callback (any driver except for vz) nobody will unref it later. As a result, client connection will not be disposed and driver connection will not be closed. The fix is easy. We don't need to refcount at all. We don't get a dangling pointer because in remoteClientFreeFunc, which is called upon disposing this network client object, we unregister the close callback. Signed-off-by: Nikolay Shirokovskiy <nshirokovskiy@virtuozzo.com> Signed-off-by: Erik Skultety <eskultet@redhat.com>
This commit is contained in:
parent
0b36b0e9ce
commit
ce35122cfe
@ -3382,11 +3382,9 @@ remoteDispatchConnectCloseCallbackRegister(virNetServerPtr server ATTRIBUTE_UNUS
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
// on behalf of close callback
|
||||
virObjectRef(client);
|
||||
if (virConnectRegisterCloseCallback(priv->conn,
|
||||
remoteRelayConnectionClosedEvent,
|
||||
client, virObjectFreeCallback) < 0)
|
||||
client, NULL) < 0)
|
||||
goto cleanup;
|
||||
|
||||
priv->closeRegistered = true;
|
||||
|
Loading…
x
Reference in New Issue
Block a user