]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: Ignore graphics cookie if port == 0
authorJiri Denemark <jdenemar@redhat.com>
Tue, 20 Sep 2016 15:27:03 +0000 (17:27 +0200)
committerJiri Denemark <jdenemar@redhat.com>
Wed, 21 Sep 2016 12:11:26 +0000 (14:11 +0200)
Old libvirt represents

    <graphics type='spice'>
      <listen type='none'/>
    </graphics>

as

    <graphics type='spice' autoport='no'/>

In this mode, QEMU doesn't listen for SPICE connection anywhere and
clients have to use virDomainOpenGraphics* APIs to attach to the domain.
That is, the client has to run on the same host where the domains runs
and it's impossible to tell the client to reconnect to the destination
QEMU during migration (unless there is some kind of proxy on the host).

While current libvirt correctly ignores such graphics devices when
creating graphics migration cookie, old libvirt just sends

    <graphics type='spice' port='0' listen='0.0.0.0' tlsPort='-1'/>

in the cookie. After seeing this cookie, we happily would call
client_migrate_info QMP command and wait for SPICE_MIGRATE_COMPLETED
event, which is quite pointless since the doesn't know where to connecti
anyway. We should just ignore such cookies.

https://bugzilla.redhat.com/show_bug.cgi?id=1376083

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
src/qemu/qemu_migration.c

index e734816c4e12e673faf3d52f3715f3a0667ea051..8a220d938a3c3ef8f0b2d876b5df44a612b8272b 100644 (file)
@@ -2903,6 +2903,15 @@ qemuDomainMigrateGraphicsRelocate(virQEMUDriverPtr driver,
         goto cleanup;
     }
 
+    /* Older libvirt sends port == 0 for listen type='none' graphics. It's
+     * safe to ignore such requests since relocation to unknown port does
+     * not make sense in general.
+     */
+    if (port <= 0 && tlsPort <= 0) {
+        ret = 0;
+        goto cleanup;
+    }
+
     if (qemuDomainObjEnterMonitorAsync(driver, vm,
                                        QEMU_ASYNC_JOB_MIGRATION_OUT) == 0) {
         ret = qemuMonitorGraphicsRelocate(priv->mon, type, listenAddress,