On 02/09/2012 06:53 PM, Laine Stump wrote: > > The problems I can see with that: > > 1) That would require you to once again modify the server string > in-place, but you can't rely on it still having the 2 extra bytes, so > you would have to create a new string. > Modifying the server is not a problem. If you allocate new string it is freed properly with xmlFreeURI(). I know it's a little bit clumsy but it works. Also the modification is needed only for calling the function once. > 2) If somebody decided in the future to use different libxml2 API on the > URI (e.g. xmlPrintURI), or wrote their own code to do something with the > string, they would have to know to provide a wrapper for that as well. > Yes, this is a little problem at first. However, on the other hand, if somebody wants to use the uri->server fro anything, they would have to know to use the function returning proper hostname/ip. > 3) Just the oddness of determining whether or not to add brackets back > based on whether or not you find a ":" in the string. > This seems very reasonable to me. The brackets are there just for the purpose of determining what is the IPv6 address and what's the port. It is exactly the reason why it is needed :) > On the other hand, if you leave the brackets in, then everybody who uses > uri->server directly needs to know that it may have extraneous brackets > around it, so I'm undecided. Maybe someone else has an opinion that will > take it over the edge. > There (maybe) is one more way how to do this. I'm saying "maybe" because while handling all the cons we discussed, it is also the worst option to deal with such a problem, I guess. We can create new structure (virURI with virURIPtr etc.) that encapsulates xmlURI and also has it's own members that would help determining what to do in what function. There would be one more layer of functions accessing this structure and there could even be a pointer to xmlURIPtr that one can use for unimplemented functions around the new structure. But as I say, I think this is the worst option considering the real problem is with "brackets around IPv6 in libxml2" and fixing it there would save us from dealing with lots of bugs. -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list