~singpolyma/biboumi

0cd848e532c8c60ed4f3a5d1e6a3850929f2765b — louiz’ 5 years ago 99c3648
Send the stanza-id for messages received by other users

fix #3347
2 files changed, 8 insertions(+), 6 deletions(-)

M src/bridge/bridge.cpp
M tests/end_to_end/__main__.py
M src/bridge/bridge.cpp => src/bridge/bridge.cpp +4 -4
@@ 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

M tests/end_to_end/__main__.py => tests/end_to_end/__main__.py +4 -2
@@ 1344,8 1344,10 @@ if __name__ == '__main__':
                     partial(send_stanza, "<message from='{jid_one}/{resource_one}' to='#foo%{irc_server_one}' type='groupchat'><body>coucou</body></message>"),
                     # 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