Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Evergreen:11.1:Test
virt-viewer
vnc-listen.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File vnc-listen.patch of Package virt-viewer
Index: virt-viewer-0.0.3/src/main.c =================================================================== --- virt-viewer-0.0.3.orig/src/main.c +++ virt-viewer-0.0.3/src/main.c @@ -617,7 +617,7 @@ static virDomainPtr viewer_lookup_domain return dom; } -static int viewer_extract_vnc_graphics(virDomainPtr dom, char **port) +static int viewer_extract_vnc_graphics(virDomainPtr dom, char **host, char **port) { char *xmldesc = virDomainGetXMLDesc(dom, 0); xmlDocPtr xml = NULL; @@ -641,6 +641,14 @@ static int viewer_extract_vnc_graphics(v if (!ctxt) 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; + } + obj = xmlXPathEval((const xmlChar *)"string(/domain/devices/graphics[@type='vnc']/@port)", ctxt); if (!obj || obj->type != XPATH_STRING || !obj->stringval || !obj->stringval[0]) goto error; @@ -786,6 +794,7 @@ viewer_start (const char *uri, const cha virConnectPtr conn = NULL; virDomainPtr dom = NULL; char *host = NULL; + char *vnchost = NULL; char *vncport = NULL; char *transport = NULL; char *user = NULL; @@ -813,13 +822,16 @@ viewer_start (const char *uri, const cha } while (!dom); do { - viewer_extract_vnc_graphics(dom, &vncport); + viewer_extract_vnc_graphics(dom, &vnchost, &vncport); if (!vncport && !waitvnc) { fprintf(stderr, "unable to find vnc graphics for %s\n", name); return 4; } - if (!vncport) + if (!vncport) { usleep(300*1000); + free(vnchost); + vnchost = NULL; + } } while (!vncport); tmpname = virDomainGetName(dom); if (tmpname != NULL) { @@ -828,6 +840,9 @@ viewer_start (const char *uri, const cha virDomainFree(dom); virConnectClose(conn); + if (vnchost == NULL) + vnchost = strdup("127.0.0.1"); + if (viewer_extract_host(uri, &host, &transport, &user, &port) < 0) { fprintf(stderr, "unable to determine hostname for URI %s\n", uri); return 5; @@ -850,7 +865,7 @@ viewer_start (const char *uri, const cha if (fd >= 0) vnc_display_open_fd(VNC_DISPLAY(vnc), fd); else - vnc_display_open_host(VNC_DISPLAY(vnc), host, vncport); + vnc_display_open_host(VNC_DISPLAY(vnc), vnchost, vncport); return 0; }
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