On Tue, Oct 09, 2012 at 05:53:53PM +0100, Daniel P. Berrange wrote: > From: "Daniel P. Berrange" <berrange@xxxxxxxxxx> > > The string '::' is just one of many possible ways to express > the IPv6 "any" address. Others include '::0', '0:0:0:0:0:0:0:0', > '0::0' and more. Instead of trying to do strcmp, actually try > parsing the address with GInetAddress and then simply use an > accessor to check what type it is > > Signed-off-by: Daniel P. Berrange <berrange@xxxxxxxxxx> > --- > src/virt-viewer.c | 25 ++++++++++++++++++++++--- > 1 file changed, 22 insertions(+), 3 deletions(-) > > diff --git a/src/virt-viewer.c b/src/virt-viewer.c > index 0a4cea7..5b6a479 100644 > --- a/src/virt-viewer.c > +++ b/src/virt-viewer.c > @@ -282,6 +282,27 @@ virt_viewer_extract_xpath_string(const gchar *xmldesc, > return port; > } > > + > +static gboolean > +virt_viewer_replace_host(const gchar *host) > +{ > + GInetAddress *addr; > + gboolean ret; > + > + if (!host) > + return TRUE; > + > + addr = g_inet_address_new_from_string(host); > + > + if (!addr) /* Parsing error means it was probably a hotsname */ nit: hostname ACK Christophe > + return FALSE; > + > + ret = g_inet_address_get_is_any(addr); > + g_object_unref(addr); > + > + return ret; > +} > + > static gboolean > virt_viewer_extract_connect_info(VirtViewer *self, > virDomainPtr dom) > @@ -351,9 +372,7 @@ virt_viewer_extract_connect_info(VirtViewer *self, > * from a remote host. Instead we fallback to the hostname used in > * the libvirt URI. This isn't perfect but it is better than nothing > */ > - if (!ghost || > - (strcmp(ghost, "0.0.0.0") == 0 || > - strcmp(ghost, "::") == 0)) { > + if (virt_viewer_replace_host(ghost)) { > DEBUG_LOG("Guest graphics listen '%s' is NULL or a wildcard, replacing with '%s'", > ghost ? ghost : "", host); > g_free(ghost); > -- > 1.7.11.2 > > _______________________________________________ > virt-tools-list mailing list > virt-tools-list@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/virt-tools-list
Attachment:
pgpZXXCAq1zQ2.pgp
Description: PGP signature