From 0cd848e532c8c60ed4f3a5d1e6a3850929f2765b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?louiz=E2=80=99?= Date: Sat, 31 Mar 2018 02:10:39 +0200 Subject: Send the stanza-id for messages received by other users fix #3347 --- src/bridge/bridge.cpp | 8 ++++---- tests/end_to_end/__main__.py | 6 ++++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/bridge/bridge.cpp b/src/bridge/bridge.cpp index 90caac1..569574a 100644 --- a/src/bridge/bridge.cpp +++ b/src/bridge/bridge.cpp @@ -819,19 +819,19 @@ void Bridge::send_irc_version_request(const std::string& irc_hostname, const std void Bridge::send_message(const Iid& iid, const std::string& nick, const std::string& body, const bool muc) { const auto encoding = in_encoding_for(*this, iid); + std::string uuid{}; if (muc) { #ifdef USE_DATABASE const auto xmpp_body = this->make_xmpp_body(body, encoding); if (!nick.empty() && this->record_history) - Database::store_muc_message(this->get_bare_jid(), iid.get_local(), iid.get_server(), std::chrono::system_clock::now(), - std::get<0>(xmpp_body), nick); + uuid = Database::store_muc_message(this->get_bare_jid(), iid.get_local(), iid.get_server(), std::chrono::system_clock::now(), + std::get<0>(xmpp_body), nick); #endif for (const auto& resource: this->resources_in_chan[iid.to_tuple()]) { this->xmpp.send_muc_message(std::to_string(iid), nick, this->make_xmpp_body(body, encoding), - this->user_jid + "/" + resource, {}, utils::gen_uuid()); - + this->user_jid + "/" + resource, uuid, utils::gen_uuid()); } } else diff --git a/tests/end_to_end/__main__.py b/tests/end_to_end/__main__.py index 99be694..82321eb 100644 --- a/tests/end_to_end/__main__.py +++ b/tests/end_to_end/__main__.py @@ -1344,8 +1344,10 @@ if __name__ == '__main__': partial(send_stanza, "coucou"), # Receive the message, forwarded to the two users partial(expect_unordered, [ - ("/message[@from='#foo%{irc_server_one}/{nick_one}'][@to='{jid_one}/{resource_one}'][@type='groupchat']/body[text()='coucou']",), - ("/message[@from='#foo%{irc_server_one}/{nick_one}'][@to='{jid_two}/{resource_one}'][@type='groupchat']/body[text()='coucou']",) + ("/message[@from='#foo%{irc_server_one}/{nick_one}'][@to='{jid_one}/{resource_one}'][@type='groupchat']/body[text()='coucou']", + "/message/stable_id:stanza-id[@by='#foo%{irc_server_one}'][@id]"), + ("/message[@from='#foo%{irc_server_one}/{nick_one}'][@to='{jid_two}/{resource_one}'][@type='groupchat']/body[text()='coucou']", + "/message/stable_id:stanza-id[@by='#foo%{irc_server_one}'][@id]") ]), # Send a private message, to a in-room JID -- cgit v1.2.3