diff options
-rw-r--r-- | libbpkg/manifest.cxx | 7 | ||||
-rw-r--r-- | libbpkg/manifest.hxx | 4 | ||||
-rw-r--r-- | tests/repository-location/driver.cxx | 5 |
3 files changed, 9 insertions, 7 deletions
diff --git a/libbpkg/manifest.cxx b/libbpkg/manifest.cxx index 7514357..016e88c 100644 --- a/libbpkg/manifest.cxx +++ b/libbpkg/manifest.cxx @@ -3153,12 +3153,9 @@ namespace bpkg if (!authority || authority->host.empty ()) bad_url ("invalid host"); - // Normalize the host name. + // Normalize the host name/address. // - // @@ Also add IPv4/6 addresses normalization. - // - if (authority->host.kind == url_host_kind::name) - lcase (authority->host.value); + authority->host.normalize (); // We don't distinguish between the absent and empty paths for the // remote repository URLs. diff --git a/libbpkg/manifest.hxx b/libbpkg/manifest.hxx index dfb8762..b666716 100644 --- a/libbpkg/manifest.hxx +++ b/libbpkg/manifest.hxx @@ -1026,8 +1026,8 @@ namespace bpkg // non-empty object with non-empty path never contains the trailing slash // (except for the root path on POSIX system). // - // - For the remote URL object the host name is in the lower case (IPv4/6 are - // not supported) and the path is relative. + // - For the remote URL object the host component is normalized (see + // butl::basic_url_host for details) and the path is relative. // // - For the local URL object the path can be relative or absolute. Query // can not be present. Represent the object using the file:// notation if diff --git a/tests/repository-location/driver.cxx b/tests/repository-location/driver.cxx index a91c2e8..32f5b8e 100644 --- a/tests/repository-location/driver.cxx +++ b/tests/repository-location/driver.cxx @@ -562,6 +562,11 @@ namespace bpkg assert (l.canonical_name () == "pkg:cppget.org/qw/a/b"); } { + repository_location l (loc ("http://00.00.010.0/qw/1/a/b/")); + assert (l.string () == "http://0.0.10.0/qw/1/a/b"); + assert (l.canonical_name () == "pkg:0.0.10.0/qw/a/b"); + } + { repository_location l (loc ("http://pkg.CPPget.org/qw/1/a/b/")); assert (l.string () == "http://pkg.cppget.org/qw/1/a/b"); assert (l.canonical_name () == "pkg:cppget.org/qw/a/b"); |