diff --git a/src/server/request_context.cpp b/src/server/request_context.cpp
index 9e0b965c0..91ff7a72d 100644
--- a/src/server/request_context.cpp
+++ b/src/server/request_context.cpp
@@ -202,21 +202,12 @@ std::string RequestContext::get_user_language() const
return userlang.lang;
}
-bool RequestContext::user_language_comes_from_cookie() const
-{
- return userlang.selectedBy == UserLanguage::SelectorKind::COOKIE;
-}
-
RequestContext::UserLanguage RequestContext::determine_user_language() const
{
try {
return {UserLanguage::SelectorKind::QUERY_PARAM, get_argument("userlang")};
} catch(const std::out_of_range&) {}
- try {
- return {UserLanguage::SelectorKind::COOKIE, cookies.at("userlang")};
- } catch(const std::out_of_range&) {}
-
try {
const std::string acceptLanguage = get_header("Accept-Language");
const auto userLangPrefs = parseUserLanguagePreferences(acceptLanguage);
diff --git a/src/server/request_context.h b/src/server/request_context.h
index 081b699b9..d5ab7b515 100644
--- a/src/server/request_context.h
+++ b/src/server/request_context.h
@@ -119,15 +119,12 @@ class RequestContext {
std::string get_user_language() const;
std::string get_requested_format() const;
- bool user_language_comes_from_cookie() const;
-
private: // types
struct UserLanguage
{
enum SelectorKind
{
QUERY_PARAM,
- COOKIE,
ACCEPT_LANGUAGE_HEADER,
DEFAULT
};
diff --git a/src/server/response.cpp b/src/server/response.cpp
index db20a2fb4..bc8c85e51 100644
--- a/src/server/response.cpp
+++ b/src/server/response.cpp
@@ -387,13 +387,6 @@ MHD_Result Response::send(const RequestContext& request, MHD_Connection* connect
MHD_add_response_header(response, p.first.c_str(), p.second.c_str());
}
- if ( ! request.user_language_comes_from_cookie() ) {
- const std::string cookie = "userlang=" + request.get_user_language()
- + ";Path=" + request.get_root_path()
- + ";Max-Age=31536000";
- MHD_add_response_header(response, MHD_HTTP_HEADER_SET_COOKIE, cookie.c_str());
- }
-
if (m_returnCode == MHD_HTTP_OK && m_byteRange.kind() == ByteRange::RESOLVED_PARTIAL_CONTENT)
m_returnCode = MHD_HTTP_PARTIAL_CONTENT;
diff --git a/test/server.cpp b/test/server.cpp
index 958d01cb0..520f89ce3 100644
--- a/test/server.cpp
+++ b/test/server.cpp
@@ -1130,7 +1130,6 @@ TEST_F(ServerTest, UserLanguageControl)
const std::string url;
const std::string acceptLanguageHeader;
const char* const requestCookie; // Cookie: header of the request
- const char* const responseSetCookie; // Set-Cookie: header of the response
const std::string expectedH1;
operator TestContext() const
@@ -1157,7 +1156,6 @@ TEST_F(ServerTest, UserLanguageControl)
/*url*/ "/ROOT%23%3F/content/zimfile/invalid-article",
/*Accept-Language:*/ "",
/*Request Cookie:*/ NO_COOKIE,
- /*Response Set-Cookie:*/ "userlang=en;Path=/ROOT%23%3F;Max-Age=31536000",
/* expected
*/ "Not Found"
},
{
@@ -1165,7 +1163,6 @@ TEST_F(ServerTest, UserLanguageControl)
/*url*/ "/ROOT%23%3F/content/zimfile/invalid-article?userlang=en",
/*Accept-Language:*/ "",
/*Request Cookie:*/ NO_COOKIE,
- /*Response Set-Cookie:*/ "userlang=en;Path=/ROOT%23%3F;Max-Age=31536000",
/* expected */ "Not Found"
},
{
@@ -1173,7 +1170,6 @@ TEST_F(ServerTest, UserLanguageControl)
/*url*/ "/ROOT%23%3F/content/zimfile/invalid-article?userlang=test",
/*Accept-Language:*/ "",
/*Request Cookie:*/ NO_COOKIE,
- /*Response Set-Cookie:*/ "userlang=test;Path=/ROOT%23%3F;Max-Age=31536000",
/* expected */ "[I18N TESTING] Content not found, but at least the server is alive"
},
{
@@ -1181,7 +1177,6 @@ TEST_F(ServerTest, UserLanguageControl)
/*url*/ "/ROOT%23%3F/content/zimfile/invalid-article",
/*Accept-Language:*/ "*",
/*Request Cookie:*/ NO_COOKIE,
- /*Response Set-Cookie:*/ "userlang=en;Path=/ROOT%23%3F;Max-Age=31536000",
/* expected */ "Not Found"
},
{
@@ -1189,71 +1184,20 @@ TEST_F(ServerTest, UserLanguageControl)
/*url*/ "/ROOT%23%3F/content/zimfile/invalid-article",
/*Accept-Language:*/ "test",
/*Request Cookie:*/ NO_COOKIE,
- /*Response Set-Cookie:*/ "userlang=test;Path=/ROOT%23%3F;Max-Age=31536000",
/* expected */ "[I18N TESTING] Content not found, but at least the server is alive"
},
{
- "userlang cookie is respected",
+ "userlang cookie is ignored",
/*url*/ "/ROOT%23%3F/content/zimfile/invalid-article",
/*Accept-Language:*/ "",
/*Request Cookie:*/ "userlang=test",
- /*Response Set-Cookie:*/ NO_COOKIE,
- /* expected */ "[I18N TESTING] Content not found, but at least the server is alive"
- },
- {
- "userlang cookie is correctly parsed",
- /*url*/ "/ROOT%23%3F/content/zimfile/invalid-article",
- /*Accept-Language:*/ "",
- /*Request Cookie:*/ "anothercookie=123; userlang=test",
- /*Response Set-Cookie:*/ NO_COOKIE,
- /* expected */ "[I18N TESTING] Content not found, but at least the server is alive"
- },
- {
- "userlang cookie is correctly parsed",
- /*url*/ "/ROOT%23%3F/content/zimfile/invalid-article",
- /*Accept-Language:*/ "",
- /*Request Cookie:*/ "userlang=test; anothercookie=abc",
- /*Response Set-Cookie:*/ NO_COOKIE,
- /* expected */ "[I18N TESTING] Content not found, but at least the server is alive"
- },
- {
- "userlang cookie is correctly parsed",
- /*url*/ "/ROOT%23%3F/content/zimfile/invalid-article",
- /*Accept-Language:*/ "",
- /*Request Cookie:*/ "cookie1=abc; userlang=test; cookie2=xyz",
- /*Response Set-Cookie:*/ NO_COOKIE,
- /* expected */ "[I18N TESTING] Content not found, but at least the server is alive"
- },
- {
- "Multiple userlang cookies are not a problem",
- /*url*/ "/ROOT%23%3F/content/zimfile/invalid-article",
- /*Accept-Language:*/ "",
- /*Request Cookie:*/ "cookie1=abc; userlang=en; userlang=test; cookie2=xyz",
- /*Response Set-Cookie:*/ NO_COOKIE,
- /* expected */ "[I18N TESTING] Content not found, but at least the server is alive"
+ /* expected */ "Not Found"
},
{
"userlang query parameter takes precedence over Accept-Language",
/*url*/ "/ROOT%23%3F/content/zimfile/invalid-article?userlang=en",
/*Accept-Language:*/ "test",
/*Request Cookie:*/ NO_COOKIE,
- /*Response Set-Cookie:*/ "userlang=en;Path=/ROOT%23%3F;Max-Age=31536000",
- /* expected */ "Not Found"
- },
- {
- "userlang query parameter takes precedence over its cookie counterpart",
- /*url*/ "/ROOT%23%3F/content/zimfile/invalid-article?userlang=en",
- /*Accept-Language:*/ "",
- /*Request Cookie:*/ "userlang=test",
- /*Response Set-Cookie:*/ "userlang=en;Path=/ROOT%23%3F;Max-Age=31536000",
- /* expected */ "Not Found"
- },
- {
- "userlang in cookies takes precedence over Accept-Language",
- /*url*/ "/ROOT%23%3F/content/zimfile/invalid-article",
- /*Accept-Language:*/ "test",
- /*Request Cookie:*/ "userlang=en",
- /*Response Set-Cookie:*/ NO_COOKIE,
/* expected */ "Not Found"
},
{
@@ -1263,7 +1207,6 @@ TEST_F(ServerTest, UserLanguageControl)
/*url*/ "/ROOT%23%3F/content/zimfile/invalid-article",
/*Accept-Language:*/ "test;q=0.9, en;q=0.2",
/*Request Cookie:*/ NO_COOKIE,
- /*Response Set-Cookie:*/ "userlang=test;Path=/ROOT%23%3F;Max-Age=31536000",
/* expected */ "[I18N TESTING] Content not found, but at least the server is alive"
},
{
@@ -1273,7 +1216,6 @@ TEST_F(ServerTest, UserLanguageControl)
/*url*/ "/ROOT%23%3F/content/zimfile/invalid-article",
/*Accept-Language:*/ "test;q=0.2, en;q=0.9",
/*Request Cookie:*/ NO_COOKIE,
- /*Response Set-Cookie:*/ "userlang=en;Path=/ROOT%23%3F;Max-Age=31536000",
/* expected */ "Not Found"
},
};
@@ -1289,12 +1231,7 @@ TEST_F(ServerTest, UserLanguageControl)
headers.insert({"Cookie", t.requestCookie});
}
const auto r = zfs1_->GET(t.url.c_str(), headers);
- if ( t.responseSetCookie ) {
- ASSERT_TRUE(r->has_header("Set-Cookie")) << t;
- EXPECT_EQ(t.responseSetCookie, getHeaderValue(r->headers, "Set-Cookie")) << t;
- } else {
- EXPECT_FALSE(r->has_header("Set-Cookie"));
- }
+ EXPECT_FALSE(r->has_header("Set-Cookie"));
std::regex_search(r->body, h1Match, h1Regex);
const std::string h1(h1Match[1]);
EXPECT_EQ(h1, t.expectedH1) << t;