Commit de7b3503 authored by louiz’'s avatar louiz’

Jidprep also handles the resource part

parent b71547a3
......@@ -161,10 +161,15 @@ int main()
assert(jid2.domain == "ツ.coucou");
assert(jid2.resource == "coucou@coucou/coucou");
// Nodeprep
const std::string& badjid("~louiz@EpiK-7D9D1FDE.poez.io");
// Jidprep
const std::string& badjid("~zigougou@EpiK-7D9D1FDE.poez.io/Boujour/coucou/slt");
const std::string correctjid = jidprep(badjid);
assert(correctjid == "~louiz@epik-7d9d1fde.poez.io");
assert(correctjid == "~zigougou@epik-7d9d1fde.poez.io/Boujour/coucou/slt");
const std::string& badjid2("Zigougou@poez.io");
const std::string correctjid2 = jidprep(badjid2);
std::cout << correctjid2 << std::endl;
assert(correctjid2 == "zigougou@poez.io");
/**
* Config
......
......@@ -59,7 +59,22 @@ std::string jidprep(const std::string& original)
return "";
}
return std::string(local) + "@" + domain;
// If there is no resource, stop here
if (jid.resource.empty())
return std::string(local) + "@" + domain;
// Otherwise, also process the resource part
char resource[max_jid_part_len] = {};
memcpy(resource, jid.resource.data(), jid.resource.size());
rc = static_cast<Stringprep_rc>(::stringprep(resource, max_jid_part_len,
static_cast<Stringprep_profile_flags>(0), stringprep_xmpp_resourceprep));
if (rc != STRINGPREP_OK)
{
log_error(error_msg + stringprep_strerror(rc));
return "";
}
return std::string(local) + "@" + domain + "/" + resource;
#else
(void)original;
return "";
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment