Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Evergreen:11.4
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.1/src/viewer.c =================================================================== --- virt-viewer-0.2.1.orig/src/viewer.c +++ virt-viewer-0.2.1/src/viewer.c @@ -696,7 +696,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; @@ -709,6 +709,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); @@ -868,15 +876,18 @@ 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) { viewer_simple_message_dialog(viewer->window, _("Cannot determine the VNC port for the guest %s"), viewer->domkey); + free(vnchost); + vnchost = NULL; goto cleanup; } @@ -886,6 +897,9 @@ static int viewer_activate(VirtViewer *v 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 : ""); @@ -901,7 +915,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