From ea4fc80230ce7c3ecfc7321ad359533722cafdab Mon Sep 17 00:00:00 2001 From: Pavel Hrdina Date: Thu, 7 Apr 2016 13:08:58 +0200 Subject: [PATCH] domain_conf: call ...ListensParseXML only for appropriate graphics Instead of calling the virDomainGraphicsListensParseXML function for all graphics types and ignore the wrong ones move the call only to graphics types where we supports listen elements. Signed-off-by: Pavel Hrdina --- src/conf/domain_conf.c | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 9f5f3b20a1..446fbc561d 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -10641,13 +10641,6 @@ virDomainGraphicsListensParseXML(virDomainGraphicsDefPtr def, ctxt->node = node; - if (def->type != VIR_DOMAIN_GRAPHICS_TYPE_VNC && - def->type != VIR_DOMAIN_GRAPHICS_TYPE_RDP && - def->type != VIR_DOMAIN_GRAPHICS_TYPE_SPICE) { - ret = 0; - goto error; - } - /* parse the subelements for graphics types that support it */ nListens = virXPathNodeSet("./listen", ctxt, &listenNodes); if (nListens < 0) @@ -10708,6 +10701,7 @@ virDomainGraphicsListensParseXML(virDomainGraphicsDefPtr def, static int virDomainGraphicsDefParseXMLVNC(virDomainGraphicsDefPtr def, xmlNodePtr node, + xmlXPathContextPtr ctxt, unsigned int flags) { char *port = virXMLPropString(node, "port"); @@ -10716,6 +10710,9 @@ virDomainGraphicsDefParseXMLVNC(virDomainGraphicsDefPtr def, char *autoport = virXMLPropString(node, "autoport"); int ret = -1; + if (virDomainGraphicsListensParseXML(def, node, ctxt, flags) < 0) + goto error; + if (port) { if (virStrToLong_i(port, NULL, 10, &def->data.vnc.port) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, @@ -10816,6 +10813,7 @@ virDomainGraphicsDefParseXMLSDL(virDomainGraphicsDefPtr def, static int virDomainGraphicsDefParseXMLRDP(virDomainGraphicsDefPtr def, xmlNodePtr node, + xmlXPathContextPtr ctxt, unsigned int flags) { char *port = virXMLPropString(node, "port"); @@ -10824,6 +10822,9 @@ virDomainGraphicsDefParseXMLRDP(virDomainGraphicsDefPtr def, char *multiUser = virXMLPropString(node, "multiUser"); int ret = -1; + if (virDomainGraphicsListensParseXML(def, node, ctxt, flags) < 0) + goto error; + if (port) { if (virStrToLong_i(port, NULL, 10, &def->data.rdp.port) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, @@ -10894,6 +10895,7 @@ virDomainGraphicsDefParseXMLDesktop(virDomainGraphicsDefPtr def, static int virDomainGraphicsDefParseXMLSpice(virDomainGraphicsDefPtr def, xmlNodePtr node, + xmlXPathContextPtr ctxt, unsigned int flags) { xmlNodePtr cur; @@ -10904,6 +10906,9 @@ virDomainGraphicsDefParseXMLSpice(virDomainGraphicsDefPtr def, int defaultModeVal; int ret = -1; + if (virDomainGraphicsListensParseXML(def, node, ctxt, flags) < 0) + goto error; + if (port) { if (virStrToLong_i(port, NULL, 10, &def->data.spice.port) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, @@ -11216,12 +11221,9 @@ virDomainGraphicsDefParseXML(xmlNodePtr node, goto error; } - if (virDomainGraphicsListensParseXML(def, node, ctxt, flags) < 0) - goto error; - switch ((virDomainGraphicsType)def->type) { case VIR_DOMAIN_GRAPHICS_TYPE_VNC: - if (virDomainGraphicsDefParseXMLVNC(def, node, flags) < 0) + if (virDomainGraphicsDefParseXMLVNC(def, node, ctxt, flags) < 0) goto error; break; case VIR_DOMAIN_GRAPHICS_TYPE_SDL: @@ -11229,7 +11231,7 @@ virDomainGraphicsDefParseXML(xmlNodePtr node, goto error; break; case VIR_DOMAIN_GRAPHICS_TYPE_RDP: - if (virDomainGraphicsDefParseXMLRDP(def, node, flags) < 0) + if (virDomainGraphicsDefParseXMLRDP(def, node, ctxt, flags) < 0) goto error; break; case VIR_DOMAIN_GRAPHICS_TYPE_DESKTOP: @@ -11237,7 +11239,7 @@ virDomainGraphicsDefParseXML(xmlNodePtr node, goto error; break; case VIR_DOMAIN_GRAPHICS_TYPE_SPICE: - if (virDomainGraphicsDefParseXMLSpice(def, node, flags) < 0) + if (virDomainGraphicsDefParseXMLSpice(def, node, ctxt, flags) < 0) goto error; break; case VIR_DOMAIN_GRAPHICS_TYPE_LAST: