boostorg / url

Boost.URL is a library for manipulating Uniform Resource Identifiers (URIs) and Locators (URLs).
https://www.boost.org/doc/libs/master/libs/url/index.html
Boost Software License 1.0
185 stars 50 forks source link

Punycode branch drops some 0s when setting from an IP address #866

Open MitchellBot opened 5 days ago

MitchellBot commented 5 days ago

We're using the punycode branch to parse URIs and recently stumbled upon an issue where IP addresses with multiple 0s will drop some of them during parsing.

For instance, given the IP address 192.168.108.100, if you either set_host or set_host_address and then re-print the object, it will come out as 192.168.18.10.

Example:

    boost::urls::url someUrl;
    someUrl.set_host("192.168.108.100");
    std::cout << "URL is: " << someUrl.c_str() << std::endl;

Output: URL is: //192.168.18.10

Interestingly, even using an ipv4 object directly doesn't work:

        boost::urls::url someUrl;
        someUrl.set_host_ipv4(boost::urls::ipv4_address("192.168.108.100"));
        std::cout << "Boost url (by IP) is: " << someUrl.c_str() << std::endl;

Output: Boost url (by IP) is: //192.168.18.10

I see that the punycode branch hasn't been updated in quite some time, is it possible that this is already known and has been fixed in develop?

alandefreitas commented 5 days ago

Punycode was a short experiment that’s discontinued. It never made it to develop.

What’s your use case for punycode?

MitchellBot commented 5 days ago

After discussing with my colleagues no one seems to recollect choosing that branch to begin with. It may have been mistakenly downloaded.

alandefreitas commented 4 days ago

I see. Yes. Punycode never made it to Boost. This punycode implementation is probably not even compatible with the latest version of Boost.URL.