From e6c5ae46f7cb552313ee3c07736c28d50294fdcc Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Thu, 14 Jun 2012 14:48:42 +0200 Subject: [PATCH] qemu: Enable disconnecting SPICE clients without changing password Libvirt updates the configuration of SPICE server only when something changes. This is unfortunate when the user wants to disconnect a existing spice session when the connected attribute is already "disconnect". This patch modifies the conditions for calling the password updater to be called when nothing changes, but the connected attribute is already "disconnect". (cherry picked from commit e0f0131d33e283f1b76c05eb7bef4bbbb3f2fd72) --- src/qemu/qemu_hotplug.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index 2720752e03..62de67c9f9 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -1539,7 +1539,7 @@ qemuDomainChangeGraphics(struct qemud_driver *driver, _("cannot change listen address setting on spice graphics")); return -1; } - if (STRNEQ_NULLABLE(oldListenNetwork,newListenNetwork)) { + if (STRNEQ_NULLABLE(oldListenNetwork, newListenNetwork)) { qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("cannot change listen network setting on spice graphics")); return -1; @@ -1551,11 +1551,16 @@ qemuDomainChangeGraphics(struct qemud_driver *driver, return -1; } - /* If a password lifetime was, or is set, then we must always run, - * even if new password matches old password */ + /* We must reset the password if it has changed but also if: + * - password lifetime is or was set + * - the requested action has changed + * - the action is "disconnect" + */ if (olddev->data.spice.auth.expires || dev->data.spice.auth.expires || olddev->data.spice.auth.connected != dev->data.spice.auth.connected || + dev->data.spice.auth.connected == + VIR_DOMAIN_GRAPHICS_AUTH_CONNECTED_DISCONNECT || STRNEQ_NULLABLE(olddev->data.spice.auth.passwd, dev->data.spice.auth.passwd)) { VIR_DEBUG("Updating password on SPICE server %p %p",