Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Evergreen:11.2
virt-viewer
vnc-listen.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File vnc-listen.patch of Package virt-viewer
Index: virt-viewer-0.2.0/src/viewer.c =================================================================== --- virt-viewer-0.2.0.orig/src/viewer.c +++ virt-viewer-0.2.0/src/viewer.c @@ -660,7 +660,7 @@ static int viewer_matches_domain(VirtVie return 0; } -static char * viewer_extract_vnc_port(virDomainPtr dom) +static char * viewer_extract_vnc_port(virDomainPtr dom, char **host) { char *xmldesc = virDomainGetXMLDesc(dom, 0); xmlDocPtr xml = NULL; @@ -673,6 +673,14 @@ static char * viewer_extract_vnc_port(vi if (!pctxt || !pctxt->sax) goto error; + obj = xmlXPathEval((const xmlChar *)"string(/domain/devices/graphics[@type='vnc']/@listen)", ctxt); + if (obj && obj->type == XPATH_STRING && + obj->stringval && obj->stringval[0]) { + *host = strdup((const char*)obj->stringval); + xmlXPathFreeObject(obj); + obj = NULL; + } + xml = xmlCtxtReadDoc(pctxt, (const xmlChar *)xmldesc, "domain.xml", NULL, XML_PARSE_NOENT | XML_PARSE_NONET | XML_PARSE_NOWARNING); @@ -832,18 +840,26 @@ static int viewer_activate(VirtViewer *v char *host = NULL; char *transport = NULL; char *user = NULL; + char *vnchost = NULL; int port, fd = -1; int ret = -1; if (viewer->active) goto cleanup; - if ((vncport = viewer_extract_vnc_port(dom)) == NULL) + if ((vncport = viewer_extract_vnc_port(dom, &vnchost)) == NULL) + { + free(vnchost); + vnchost = NULL; goto cleanup; + } if (viewer_extract_host(viewer->uri, &host, &transport, &user, &port) < 0) goto cleanup; + if (vnchost == NULL) + vnchost = strdup("127.0.0.1"); + DEBUG_LOG("Remote host is %s and transport %s user %s", host, transport ? transport : "", user ? user : ""); @@ -859,7 +875,7 @@ static int viewer_activate(VirtViewer *v if (fd >= 0) { vnc_display_open_fd(VNC_DISPLAY(viewer->vnc), fd); } else { - vnc_display_open_host(VNC_DISPLAY(viewer->vnc), host, vncport); + vnc_display_open_host(VNC_DISPLAY(viewer->vnc), vnchost, vncport); } viewer_set_status(viewer, "Connecting to VNC server");
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor