Add the archive ID to messages when they are sent to users

This makes us compatible with mam 6.0

fix #3249
This commit is contained in:
louiz’
2017-03-30 18:16:44 +02:00
parent 1090f3ceda
commit 7f2127a7ea
7 changed files with 36 additions and 15 deletions
+10 -1
View File
@@ -380,7 +380,7 @@ void XmppComponent::send_topic(const std::string& from, Xmpp::body&& topic, cons
this->send_stanza(message);
}
void XmppComponent::send_muc_message(const std::string& muc_name, const std::string& nick, Xmpp::body&& xmpp_body, const std::string& jid_to)
void XmppComponent::send_muc_message(const std::string& muc_name, const std::string& nick, Xmpp::body&& xmpp_body, const std::string& jid_to, std::string uuid)
{
Stanza message("message");
message["to"] = jid_to;
@@ -402,6 +402,15 @@ void XmppComponent::send_muc_message(const std::string& muc_name, const std::str
// Pass the ownership of the pointer to this xmlnode
html.add_child(std::move(std::get<1>(xmpp_body)));
}
if (!uuid.empty())
{
XmlSubNode stanza_id(message, "stanza-id");
stanza_id["xmlns"] = STABLE_ID_NS;
stanza_id["by"] = muc_name + "@" + this->served_hostname;
stanza_id["id"] = std::move(uuid);
}
this->send_stanza(message);
}
+3 -1
View File
@@ -33,6 +33,7 @@
#define DATAFORM_NS "jabber:x:data"
#define RSM_NS "http://jabber.org/protocol/rsm"
#define MUC_TRAFFIC_NS "http://jabber.org/protocol/muc#traffic"
#define STABLE_ID_NS "urn:xmpp:sid:0"
/**
* An XMPP component, communicating with an XMPP server using the protocole
@@ -134,7 +135,8 @@ public:
/**
* Send a (non-private) message to the MUC
*/
void send_muc_message(const std::string& muc_name, const std::string& nick, Xmpp::body&& body, const std::string& jid_to);
void send_muc_message(const std::string& muc_name, const std::string& nick, Xmpp::body&& body, const std::string& jid_to,
std::string uuid);
/**
* Send a message, with a <delay/> element, part of a MUC history
*/