From 073bef64128bd1320b9bc4951a49edc5ab2570b1 Mon Sep 17 00:00:00 2001 From: Luyao Huang Date: Sun, 15 Feb 2015 16:49:09 +0800 Subject: [PATCH] virsh: fix IP address in vncdisplay for listen type='network' Just like the fix for domdisplay in commit 1ba815. --- tools/virsh-domain.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c index dc4a863446..2506b89a6a 100644 --- a/tools/virsh-domain.c +++ b/tools/virsh-domain.c @@ -10269,6 +10269,18 @@ cmdVNCDisplay(vshControl *ctl, const vshCmd *cmd) listen_addr = virXPathString("string(/domain/devices/graphics" "[@type='vnc']/@listen)", ctxt); + if (!listen_addr) { + /* The subelement address - - + * *should* have been automatically backfilled into its + * parent (which we just tried to + * retrieve into listen_addr above) but in some cases it + * isn't, so we also do an explicit check for the + * subelement (which, by the way, doesn't exist on libvirt + * < 0.9.4, so we really do need to check both places) + */ + listen_addr = virXPathString("string(/domain/devices/graphics" + "[@type='vnc']/listen/@address)", ctxt); + } if (listen_addr == NULL || STREQ(listen_addr, "0.0.0.0")) vshPrint(ctl, ":%d\n", port-5900); else