[libvirt] Support for older libxml2 [Was: [PATCH] Fixed URI parsing]
Eric Blake
eblake at redhat.com
Wed Feb 15 22:37:15 UTC 2012
On 02/15/2012 08:01 AM, Daniel Veillard wrote:
> I completely missed this, I'm not sure I understand comment 2:
>
> paphio:~/XML -> testURI --debug 'qemu+ssh://[3ffe::102]/system'
> scheme: qemu+ssh
> server: [3ffe::102]
> path: /system
> qemu+ssh://[3ffe::102]/system
> paphio:~/XML ->
>
> Seems to me that libxml2 URI parsing works as expected
> if I look at http://www.ietf.org/rfc/rfc3986.txt which is the level
> of the URI spec that libxml2 implements:
> so it seems to me that the "[" and "]" are part of the host address
> per the RFC spec and well libxml2 parsing is adequate. I'm not sure
> I understand the parsing problem,
It boils down to an ease-of-use question. Within a URI, I agree with
you that IPv6 addresses in the 'host' element of 'authority' have a
mandatory []. Outside of a URI, IPv6 addresses must not have [] for use
in any other libc functions. So either all clients of libxml2 must
strip [] when reading the server: field of the broken-down struct, and
reinstate [] before asking libxml to reconstruct a valid URI, or libxml2
could be taught to provide some convenient hooks:
server: remains as is
server_cooked: new field, which matches server for IPv4 and hostnames,
and which for IPv6 strips the []
and when constructing a URI from user-provided elements, automatically
add in the needed [] around IPv6 addresses (which are otherwise invalid
as they are not IPv4 nor hostnames) to create a valid URI without the
user having to track [].
However, since any ease-of-use improvements to libxml2 will only show up
in new libxml2 versions, and we must still interoperate with old
versions, I think this patch is on the right track of abstracting the
fact that libvirt must manage [] (strip it on parse, re-add it on
format) rather than relying on libxml2.
--
Eric Blake eblake at redhat.com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 620 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20120215/56158b8d/attachment-0001.sig>
More information about the libvir-list
mailing list