From 42b0f7510d656431d148f07a76e22cb8dc0b71cf Mon Sep 17 00:00:00 2001 From: Nikolay Shirokovskiy Date: Wed, 17 Feb 2016 15:14:56 +0300 Subject: [PATCH] close callback: make unregister clean after connect close event If connect close is fired then following unregister will fail as we set callback to NULL and thus callback equality checking will fail. Callback is set to NULL to make it fired only one time probabaly. Instead lets use connection equality to NULL to check if callback is already fired. Signed-off-by: Nikolay Shirokovskiy --- src/datatypes.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/datatypes.c b/src/datatypes.c index a60b05c02b..8d90a4aa0f 100644 --- a/src/datatypes.c +++ b/src/datatypes.c @@ -239,7 +239,7 @@ void virConnectCloseCallbackDataCall(virConnectCloseCallbackDataPtr close, { virObjectLock(close); - if (!close->callback) + if (!close->conn) goto exit; VIR_DEBUG("Triggering connection close callback %p reason=%d, opaque=%p", @@ -248,7 +248,6 @@ void virConnectCloseCallbackDataCall(virConnectCloseCallbackDataPtr close, if (close->freeCallback) close->freeCallback(close->opaque); - close->callback = NULL; close->freeCallback = NULL; virObjectUnref(close->conn); close->conn = NULL;