Respond to muc#traffic requests

fix #3069
This commit is contained in:
louiz’
2016-10-04 19:32:45 +02:00
parent 28f1dd7654
commit 1d197ff26c
4 changed files with 66 additions and 1 deletions
+26
View File
@@ -408,6 +408,13 @@ void BiboumiComponent::handle_iq(const Stanza& stanza)
stanza_error.disable();
}
}
else if (iid.type == Iid::Type::Channel)
{
if (node == MUC_TRAFFIC_NS)
{
this->send_irc_channel_muc_traffic_info(id, from, to_str);
}
}
}
else if ((query = stanza.get_child("query", VERSION_NS)))
{
@@ -724,6 +731,25 @@ void BiboumiComponent::send_irc_server_disco_info(const std::string& id, const s
this->send_stanza(iq);
}
void BiboumiComponent::send_irc_channel_muc_traffic_info(const std::string id, const std::string& jid_from, const std::string& jid_to)
{
Stanza iq("iq");
iq["type"] = "result";
iq["id"] = id;
iq["from"] = jid_from;
iq["to"] = jid_to;
XmlNode query("query");
query["xmlns"] = DISCO_INFO_NS;
query["node"] = MUC_TRAFFIC_NS;
// We drop all “special” traffic (like xhtml-im, chatstates, etc), so
// don’t include any <feature/>
iq.add_child(std::move(iq));
this->send_stanza(iq);
}
void BiboumiComponent::send_iq_version_request(const std::string& from,
const std::string& jid_to)
{
+5
View File
@@ -65,6 +65,11 @@ public:
* Send a result IQ with the disco informations regarding IRC server JIDs.
*/
void send_irc_server_disco_info(const std::string& id, const std::string& jid_to, const std::string& jid_from);
/**
* Sends the allowed namespaces in MUC message, according to
* http://xmpp.org/extensions/xep-0045.html#impl-service-traffic
*/
void send_irc_channel_muc_traffic_info(const std::string id, const std::string& jid_from, const std::string& jid_to);
/**
* Send an iq version request
*/