From: Marc-André Lureau Date: Wed, 8 Apr 2020 17:23:46 +0000 (+0200) Subject: slirp: leave the dbus daemon running on error X-Git-Tag: v6.3.0-rc1~76 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=be6f94277e4e2b1c4697da3c968eadd219182e62;p=thirdparty%2Flibvirt.git slirp: leave the dbus daemon running on error Don't stop the DBus daemon if a slirp helper failed to start, as it may be shared with other helpers. Signed-off-by: Marc-André Lureau Signed-off-by: Michal Privoznik Reviewed-by: Michal Privoznik --- diff --git a/src/qemu/qemu_slirp.c b/src/qemu/qemu_slirp.c index 09c1247892..815156da5d 100644 --- a/src/qemu/qemu_slirp.c +++ b/src/qemu/qemu_slirp.c @@ -258,6 +258,7 @@ qemuSlirpStart(qemuSlirpPtr slirp, int exitstatus = 0; int cmdret = 0; VIR_AUTOCLOSE errfd = -1; + bool killDBusDaemon = false; if (incoming && !qemuSlirpHasFeature(slirp, QEMU_SLIRP_FEATURE_MIGRATE)) { @@ -306,6 +307,9 @@ qemuSlirpStart(qemuSlirpPtr slirp, g_autofree char *id = qemuSlirpGetDBusVMStateId(net); g_autofree char *dbus_addr = qemuDBusGetAddress(driver, vm); + /* If per VM DBus daemon is not running yet, start it + * now. But if we fail later on, make sure to kill it. */ + killDBusDaemon = !QEMU_DOMAIN_PRIVATE(vm)->dbusDaemonRunning; if (qemuDBusStart(driver, vm) < 0) return -1; @@ -355,6 +359,7 @@ qemuSlirpStart(qemuSlirpPtr slirp, virProcessKillPainfully(pid, true); if (pidfile) unlink(pidfile); - qemuDBusStop(driver, vm); + if (killDBusDaemon) + qemuDBusStop(driver, vm); return -1; }