]> xenbits.xensource.com Git - libvirt.git/commitdiff
netserver: close clients before stopping all drivers
authorCédric Bosdonnat <cbosdonnat@suse.com>
Wed, 20 Dec 2017 16:36:10 +0000 (17:36 +0100)
committerCédric Bosdonnat <cbosdonnat@suse.com>
Thu, 21 Dec 2017 12:17:26 +0000 (13:17 +0100)
So far clients were closed when disposing the daemon, after the state
driver cleanup. This was leading to libvirtd crashing at shutdown due
to missing driver.

Moving the client close in virNetServerClose() fixes the problem.

Reviewed-by: Erik Skultety <eskultet@redhat.com>
src/rpc/virnetserver.c

index 2b76daab5566edfda87098abe44c8661df1fdfb5..43f889e2a037a70048d48a56df31fd462a61099d 100644 (file)
@@ -774,10 +774,8 @@ void virNetServerDispose(void *obj)
         virObjectUnref(srv->programs[i]);
     VIR_FREE(srv->programs);
 
-    for (i = 0; i < srv->nclients; i++) {
-        virNetServerClientClose(srv->clients[i]);
+    for (i = 0; i < srv->nclients; i++)
         virObjectUnref(srv->clients[i]);
-    }
     VIR_FREE(srv->clients);
 
     VIR_FREE(srv->mdnsGroupName);
@@ -796,6 +794,9 @@ void virNetServerClose(virNetServerPtr srv)
     for (i = 0; i < srv->nservices; i++)
         virNetServerServiceClose(srv->services[i]);
 
+    for (i = 0; i < srv->nclients; i++)
+        virNetServerClientClose(srv->clients[i]);
+
     virObjectUnlock(srv);
 }