Decode incoming JIDs local part according to xep 0106
This let users send message to nicks such as Q@CServe.quakenet.org fix #3047
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
#include <utils/tolower.hpp>
|
||||
#include <config/config.hpp>
|
||||
#include <utils/encoding.hpp>
|
||||
|
||||
#include <irc/iid.hpp>
|
||||
|
||||
@@ -68,6 +69,7 @@ Iid::Iid():
|
||||
void Iid::set_local(const std::string& loc)
|
||||
{
|
||||
this->local = utils::tolower(loc);
|
||||
xep0106::decode(local);
|
||||
}
|
||||
|
||||
void Iid::set_server(const std::string& serv)
|
||||
|
||||
@@ -396,7 +396,15 @@ int main()
|
||||
assert(iid6.get_server() == "fixed.example.com");
|
||||
assert(iid6.is_channel);
|
||||
assert(!iid6.is_user);
|
||||
|
||||
Config::set("fixed_irc_server", "", false);
|
||||
}
|
||||
|
||||
std::cout << color << "Testing JID (xep 0106) decoding…" << reset << std::endl;
|
||||
assert(Iid{"space\\20cadet!"}.get_local() == "space cadet");
|
||||
assert(Iid{"call\\20me\\20\\22ishmael\\22!"}.get_local() == "call me \"ishmael\"");
|
||||
assert(Iid{"\\2f.fanboy!"}.get_local() == "/.fanboy");
|
||||
assert(Iid{"Q\\40CServe.quakenet.org!"}.get_local() == "q@cserve.quakenet.org");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user