diff --git a/src/tools/stringTools.cpp b/src/tools/stringTools.cpp index c0e42cb05..3477aaaee 100644 --- a/src/tools/stringTools.cpp +++ b/src/tools/stringTools.cpp @@ -172,7 +172,6 @@ bool isReservedUrlChar(char c) switch (c) { case ';': case ',': - case '/': case '?': case ':': case '@': @@ -206,6 +205,7 @@ bool isHarmlessUriChar(char c) case '\'': case '(': case ')': + case '/': return true; } return false; diff --git a/test/server.cpp b/test/server.cpp index 78f56ecdc..29f1885b1 100644 --- a/test/server.cpp +++ b/test/server.cpp @@ -1156,7 +1156,7 @@ TEST_F(ServerTest, RandomPageRedirectsToAnExistingArticle) auto g = zfs1_->GET("/ROOT/random?content=zimfile"); ASSERT_EQ(302, g->status); ASSERT_TRUE(g->has_header("Location")); - ASSERT_TRUE(kiwix::startsWith(g->get_header_value("Location"), "/ROOT/content/zimfile/A%2F")); + ASSERT_TRUE(kiwix::startsWith(g->get_header_value("Location"), "/ROOT/content/zimfile/A/")); ASSERT_EQ(getCacheControlHeader(*g), "max-age=0, must-revalidate"); ASSERT_FALSE(g->has_header("ETag")); } @@ -1224,7 +1224,7 @@ TEST_F(ServerTest, BookMainPageIsRedirectedToArticleIndex) auto g = zfs1_->GET("/ROOT/content/zimfile"); ASSERT_EQ(302, g->status); ASSERT_TRUE(g->has_header("Location")); - ASSERT_EQ("/ROOT/content/zimfile/A%2Findex", g->get_header_value("Location")); + ASSERT_EQ("/ROOT/content/zimfile/A/index", g->get_header_value("Location")); } } diff --git a/test/stringTools.cpp b/test/stringTools.cpp index 890688756..102e9bf0d 100644 --- a/test/stringTools.cpp +++ b/test/stringTools.cpp @@ -110,8 +110,8 @@ namespace URLEncoding const char letters[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; const char digits[] = "0123456789"; -const char nonEncodableSymbols[] = ".-_~()*!"; -const char uriDelimSymbols[] = ":/@?=+&#$;,"; +const char nonEncodableSymbols[] = ".-_~()*!/"; +const char uriDelimSymbols[] = ":@?=+&#$;,"; const char otherSymbols[] = R"(`%^[]{}\|"<>)"; @@ -135,7 +135,7 @@ TEST(stringTools, urlEncode) EXPECT_EQ(urlEncode(nonEncodableSymbols, true), nonEncodableSymbols); EXPECT_EQ(urlEncode(uriDelimSymbols), uriDelimSymbols); - EXPECT_EQ(urlEncode(uriDelimSymbols, true), "%3A%2F%40%3F%3D%2B%26%23%24%3B%2C"); + EXPECT_EQ(urlEncode(uriDelimSymbols, true), "%3A%40%3F%3D%2B%26%23%24%3B%2C"); EXPECT_EQ(urlEncode(otherSymbols), "%60%25%5E%5B%5D%7B%7D%5C%7C%22%3C%3E"); EXPECT_EQ(urlEncode(otherSymbols), urlEncode(otherSymbols, true));