Reject messages from unjoined resources, with an error

fix #3346
This commit is contained in:
louiz’
2018-06-19 21:33:33 +02:00
parent fc17ee078f
commit 21a79b7bad
4 changed files with 43 additions and 3 deletions
+12 -3
View File
@@ -273,9 +273,10 @@ void BiboumiComponent::handle_message(const Stanza& stanza)
std::string error_type("cancel");
std::string error_name("internal-server-error");
utils::ScopeGuard stanza_error([this, &from_str, &to_str, &id, &error_type, &error_name](){
std::string error_text{};
utils::ScopeGuard stanza_error([this, &from_str, &to_str, &id, &error_type, &error_name, &error_text](){
this->send_stanza_error("message", from_str, to_str, id,
error_type, error_name, "");
error_type, error_name, error_text);
});
const XmlNode* body = stanza.get_child("body", COMPONENT_NS);
@@ -284,7 +285,15 @@ void BiboumiComponent::handle_message(const Stanza& stanza)
{
if (body && !body->get_inner().empty())
{
bridge->send_channel_message(iid, body->get_inner(), id);
if (bridge->is_resource_in_chan(iid.to_tuple(), from.resource))
bridge->send_channel_message(iid, body->get_inner(), id);
else
{
error_type = "modify";
error_name = "not-acceptable";
error_text = "You are not a participant in this room.";
return;
}
}
const XmlNode* subject = stanza.get_child("subject", COMPONENT_NS);
if (subject)