summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorlouiz’ <louiz@louiz.org>2017-12-26 19:52:41 +0100
committerlouiz’ <louiz@louiz.org>2017-12-26 19:52:41 +0100
commit37340e593ffb61eaccc444a1efdb3aa6f784a14a (patch)
tree8ac71f9564d7c72a945d759d842697ce22873bfa /src
parent286aa58c7b42f78eb72d4f05170a8c25edeba504 (diff)
downloadbiboumi-37340e593ffb61eaccc444a1efdb3aa6f784a14a.tar.gz
biboumi-37340e593ffb61eaccc444a1efdb3aa6f784a14a.tar.bz2
biboumi-37340e593ffb61eaccc444a1efdb3aa6f784a14a.tar.xz
biboumi-37340e593ffb61eaccc444a1efdb3aa6f784a14a.zip
Add a <x muc#user> node on outgoing private MUC messages
See https://xmpp.org/extensions/xep-0045.html#privatemessage fix #3321
Diffstat (limited to 'src')
-rw-r--r--src/bridge/bridge.cpp3
-rw-r--r--src/xmpp/xmpp_component.cpp8
-rw-r--r--src/xmpp/xmpp_component.hpp3
3 files changed, 11 insertions, 3 deletions
diff --git a/src/bridge/bridge.cpp b/src/bridge/bridge.cpp
index 57f0628..54bee84 100644
--- a/src/bridge/bridge.cpp
+++ b/src/bridge/bridge.cpp
@@ -862,7 +862,8 @@ void Bridge::send_message(const Iid& iid, const std::string& nick, const std::st
const auto chan_name = Iid(Jid(it->second).local, {}).get_local();
for (const auto& resource: this->resources_in_chan[ChannelKey{chan_name, iid.get_server()}])
this->xmpp.send_message(it->second, this->make_xmpp_body(body, encoding),
- this->user_jid + "/" + resource, "chat", true, true);
+ this->user_jid + "/"
+ + resource, "chat", true, true, true);
}
else
{
diff --git a/src/xmpp/xmpp_component.cpp b/src/xmpp/xmpp_component.cpp
index 24a85d7..c44b990 100644
--- a/src/xmpp/xmpp_component.cpp
+++ b/src/xmpp/xmpp_component.cpp
@@ -269,7 +269,8 @@ void* XmppComponent::get_receive_buffer(const size_t size) const
}
void XmppComponent::send_message(const std::string& from, Xmpp::body&& body, const std::string& to,
- const std::string& type, const bool fulljid, const bool nocopy)
+ const std::string& type, const bool fulljid, const bool nocopy,
+ const bool muc_private)
{
Stanza message("message");
{
@@ -301,6 +302,11 @@ void XmppComponent::send_message(const std::string& from, Xmpp::body&& body, con
XmlSubNode nocopy(message, "no-copy");
nocopy["xmlns"] = "urn:xmpp:hints";
}
+ if (muc_private)
+ {
+ XmlSubNode x(message, "x");
+ x["xmlns"] = MUC_USER_NS;
+ }
}
this->send_stanza(message);
}
diff --git a/src/xmpp/xmpp_component.hpp b/src/xmpp/xmpp_component.hpp
index 22d5c48..2bbbe3b 100644
--- a/src/xmpp/xmpp_component.hpp
+++ b/src/xmpp/xmpp_component.hpp
@@ -112,7 +112,8 @@ public:
* server-part of the JID and must be added.
*/
void send_message(const std::string& from, Xmpp::body&& body, const std::string& to,
- const std::string& type, const bool fulljid, const bool nocopy=false);
+ const std::string& type, const bool fulljid, const bool nocopy=false,
+ const bool muc_private=false);
/**
* Send a join from a new participant
*/