From be6f94277e4e2b1c4697da3c968eadd219182e62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Wed, 8 Apr 2020 19:23:46 +0200 Subject: [PATCH] slirp: leave the dbus daemon running on error MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- src/qemu/qemu_slirp.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) 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; }