diff options
author | Richard Walters <rwalters@digitalstirling.com> | 2018-07-04 19:58:54 -0700 |
---|---|---|
committer | Richard Walters <rwalters@digitalstirling.com> | 2018-07-04 19:58:54 -0700 |
commit | a3e4a2f10afaccab17d9d74a6d4ee3f1265208fc (patch) | |
tree | bf89bbd46f2c348fef98f38ee345b061ba2fa486 | |
parent | af8ff1ec7bc115f714bc332263c379bf9d6c650e (diff) |
Normalize IPv6 addresses when generating URI strings
-rw-r--r-- | src/Uri.cpp | 2 | ||||
-rw-r--r-- | test/src/UriTests.cpp | 3 |
2 files changed, 4 insertions, 1 deletions
diff --git a/src/Uri.cpp b/src/Uri.cpp index 3091b89..30c9671 100644 --- a/src/Uri.cpp +++ b/src/Uri.cpp @@ -1393,7 +1393,7 @@ namespace Uri { } if (!impl_->host.empty()) { if (ValidateIpv6Address(impl_->host)) { - buffer << '[' << impl_->host << ']'; + buffer << '[' << NormalizeCaseInsensitiveString(impl_->host) << ']'; } else { buffer << EncodeElement(impl_->host, REG_NAME_NOT_PCT_ENCODED); } diff --git a/test/src/UriTests.cpp b/test/src/UriTests.cpp index 2e5f2d6..106aade 100644 --- a/test/src/UriTests.cpp +++ b/test/src/UriTests.cpp @@ -803,6 +803,9 @@ TEST(UriTests, GenerateString) { {"http", "bob", "www.example.com", true, 8080, {"", "a c", "def"}, true, "foobar", true, "ch2", "http://bob@www.example.com:8080/a%20c/def?foobar#ch2"}, {"http", "bob", "www.example.com", true, 8080, {"", "abc", "def"}, true, "foo ar", true, "ch2", "http://bob@www.example.com:8080/abc/def?foo%20ar#ch2"}, {"http", "bob", "www.example.com", true, 8080, {"", "abc", "def"}, true, "foobar", true, "c 2", "http://bob@www.example.com:8080/abc/def?foobar#c%202"}, + + // normalization of IPv6 address hex digits + {"http", "bob", "fFfF::1", true, 8080, {"", "abc", "def"}, true, "foobar", true, "c 2", "http://bob@[ffff::1]:8080/abc/def?foobar#c%202"}, }; size_t index = 0; for (const auto& testVector : testVectors) { |