diff --git a/src/http_utils.cpp b/src/http_utils.cpp index 62fdbba0..0f75a079 100644 --- a/src/http_utils.cpp +++ b/src/http_utils.cpp @@ -223,7 +223,11 @@ std::vector http_utils::tokenize_url( std::string http_utils::standardize_url(const std::string& url) { - std::string n_url = string_utilities::regex_replace(url, "(\\/)+", "/"); + std::string n_url = url; + + std::string::iterator new_end = std::unique(n_url.begin(), n_url.end(), [](char a, char b) { return (a == b) && (a == '/'); }); + n_url.erase(new_end, n_url.end()); + std::string::size_type n_url_length = n_url.length(); std::string result; diff --git a/test/unit/http_utils_test.cpp b/test/unit/http_utils_test.cpp index 240bf5c8..5f7a9c7e 100644 --- a/test/unit/http_utils_test.cpp +++ b/test/unit/http_utils_test.cpp @@ -128,6 +128,10 @@ LT_BEGIN_AUTO_TEST(http_utils_suite, standardize_url) url = "/abc/pqr", result = ""; result = http::http_utils::standardize_url(url); LT_CHECK_EQ(result, "/abc/pqr"); + + url = "/abc//pqr", result = ""; + result = http::http_utils::standardize_url(url); + LT_CHECK_EQ(result, "/abc/pqr"); LT_END_AUTO_TEST(standardize_url) LT_BEGIN_AUTO_TEST(http_utils_suite, ip_to_str)