graphics: don't parse listens if socket attribute is present

If socket attribute is present we start VNC that listens only on that
unix socket.  This makes the parser behave the same way as we actually
use the socket attribute.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
This commit is contained in:
Pavel Hrdina 2016-04-29 12:19:03 +02:00
parent 72475ac3b3
commit 360cbf6f83
2 changed files with 9 additions and 3 deletions

View File

@ -10729,11 +10729,18 @@ virDomainGraphicsListensParseXML(virDomainGraphicsDefPtr def,
xmlNodePtr save = ctxt->node;
virDomainGraphicsListenDefPtr address = NULL;
char *listenAddr = NULL;
char *socketPath = NULL;
int nListens;
int ret = -1;
ctxt->node = node;
if (def->type == VIR_DOMAIN_GRAPHICS_TYPE_VNC &&
(socketPath = virXMLPropString(node, "socket"))) {
ret = 0;
goto error;
}
/* parse the <listen> subelements for graphics types that support it */
nListens = virXPathNodeSet("./listen", ctxt, &listenNodes);
if (nListens < 0)
@ -10786,6 +10793,7 @@ virDomainGraphicsListensParseXML(virDomainGraphicsDefPtr def,
error:
VIR_FREE(listenNodes);
VIR_FREE(listenAddr);
VIR_FREE(socketPath);
ctxt->node = save;
return ret;
}

View File

@ -19,9 +19,7 @@
<controller type='pci' index='0' model='pci-root'/>
<input type='mouse' bus='ps2'/>
<input type='keyboard' bus='ps2'/>
<graphics type='vnc' socket='/tmp/QEMUGuest1-vnc.sock'>
<listen type='address' address='127.0.0.1'/>
</graphics>
<graphics type='vnc' socket='/tmp/QEMUGuest1-vnc.sock'/>
<video>
<model type='cirrus' vram='16384' heads='1' primary='yes'/>
</video>