]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
libvirt: Increase connection reference count for callbacks
authorViktor Mihajlovski <mihajlov@linux.vnet.ibm.com>
Tue, 26 Mar 2013 09:54:53 +0000 (10:54 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Fri, 5 Apr 2013 08:36:02 +0000 (10:36 +0200)
By adjusting the reference count of the connection object we
prevent races between callback function and virConnectClose.

Signed-off-by: Viktor Mihajlovski <mihajlov@linux.vnet.ibm.com>
src/libvirt.c

index 4b9ea759914e429ed41a6a66df32d6f14340b60f..e9aff8aa48a2b48fe879c7a47384ec69a5306a87 100644 (file)
@@ -20186,6 +20186,8 @@ int virConnectRegisterCloseCallback(virConnectPtr conn,
         return -1;
     }
 
+    virObjectRef(conn);
+
     virMutexLock(&conn->lock);
 
     virCheckNonNullArgGoto(cb, error);
@@ -20206,6 +20208,7 @@ int virConnectRegisterCloseCallback(virConnectPtr conn,
 
 error:
     virMutexUnlock(&conn->lock);
+    virObjectUnref(conn);
     virDispatchError(NULL);
     return -1;
 }
@@ -20255,6 +20258,8 @@ int virConnectUnregisterCloseCallback(virConnectPtr conn,
 
     virMutexUnlock(&conn->lock);
 
+    virObjectUnref(conn);
+
     return 0;
 
 error: