Fixes Percent::encode issue mentioned in #184

This commit is contained in:
eidheim 2018-01-03 18:11:23 +01:00
commit bbbf350693
2 changed files with 3 additions and 3 deletions

View file

@ -121,8 +121,8 @@ int main() {
assert(hash("tesT") == hash("test")); assert(hash("tesT") == hash("test"));
assert(hash("test") != hash("tset")); assert(hash("test") != hash("tset"));
auto percent_decoded = "testing æøå !#$&'()*+,/:;=?@[]"; auto percent_decoded = "testing æøå !#$&'()*+,/:;=?@[]123";
auto percent_encoded = "testing+æøå+%21%23%24%26%27%28%29%2A%2B%2C%2F%3A%3B%3D%3F%40%5B%5D"; auto percent_encoded = "testing+æøå+%21%23%24%26%27%28%29%2A%2B%2C%2F%3A%3B%3D%3F%40%5B%5D123";
assert(Percent::encode(percent_decoded) == percent_encoded); assert(Percent::encode(percent_decoded) == percent_encoded);
assert(Percent::decode(percent_encoded) == percent_decoded); assert(Percent::decode(percent_encoded) == percent_decoded);
assert(Percent::decode(Percent::encode(percent_decoded)) == percent_decoded); assert(Percent::decode(Percent::encode(percent_decoded)) == percent_decoded);

View file

@ -48,7 +48,7 @@ namespace SimpleWeb {
for(auto &chr : value) { for(auto &chr : value) {
if(chr == ' ') if(chr == ' ')
result += '+'; result += '+';
else if(chr == '!' || chr == '#' || chr == '$' || (chr >= '&' && chr <= ',') || (chr >= '/' && chr <= ';') || chr == '=' || chr == '?' || chr == '@' || chr == '[' || chr == ']') else if(chr == '!' || chr == '#' || chr == '$' || (chr >= '&' && chr <= ',') || chr == '/' || chr == ':' || chr == ';' || chr == '=' || chr == '?' || chr == '@' || chr == '[' || chr == ']')
result += std::string("%") + hex_chars[chr >> 4] + hex_chars[chr & 15]; result += std::string("%") + hex_chars[chr >> 4] + hex_chars[chr & 15];
else else
result += chr; result += chr;