From: Cédric Bosdonnat Date: Wed, 20 Dec 2017 16:36:10 +0000 (+0100) Subject: netserver: close clients before stopping all drivers X-Git-Tag: v4.0.0-rc1~108 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2089ab2112e763d6de5888e498afc4fbdc3376db;p=thirdparty%2Flibvirt.git netserver: close clients before stopping all drivers 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 --- diff --git a/src/rpc/virnetserver.c b/src/rpc/virnetserver.c index 2b76daab55..43f889e2a0 100644 --- a/src/rpc/virnetserver.c +++ b/src/rpc/virnetserver.c @@ -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); }