diff options
author | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> | 2019-11-12 12:17:42 +0100 |
---|---|---|
committer | louiz’ <louiz@louiz.org> | 2019-11-13 23:25:17 +0100 |
commit | 14fe971183e5a281525827c8135965f57e15f73b (patch) | |
tree | bec9049cf26679eb911e95a61eeb5f84bd5cfecc /src/bridge | |
parent | 440e04c6ba1dfae2d6fbb55b120763e3d0da6cd1 (diff) | |
download | biboumi-14fe971183e5a281525827c8135965f57e15f73b.tar.gz biboumi-14fe971183e5a281525827c8135965f57e15f73b.tar.bz2 biboumi-14fe971183e5a281525827c8135965f57e15f73b.tar.xz biboumi-14fe971183e5a281525827c8135965f57e15f73b.zip |
Don’t treat presence updates as MUC joins
If the user sends a directed presence to an unjoined MUC without a <x/>
element, send a presence error back instead of attempting to join it
again, as this is almost never what the user wants.
Fixes #3415.
Diffstat (limited to 'src/bridge')
-rw-r--r-- | src/bridge/bridge.cpp | 7 | ||||
-rw-r--r-- | src/bridge/bridge.hpp | 6 |
2 files changed, 5 insertions, 8 deletions
diff --git a/src/bridge/bridge.cpp b/src/bridge/bridge.cpp index 71c0ea4..a2e2c9c 100644 --- a/src/bridge/bridge.cpp +++ b/src/bridge/bridge.cpp @@ -170,8 +170,7 @@ IrcClient* Bridge::find_irc_client(const std::string& hostname) const bool Bridge::join_irc_channel(const Iid& iid, std::string nickname, const std::string& password, const std::string& resource, - HistoryLimit history_limit, - const bool force_join) + HistoryLimit history_limit) { const auto& hostname = iid.get_server(); #ifdef USE_DATABASE @@ -189,8 +188,8 @@ bool Bridge::join_irc_channel(const Iid& iid, std::string nickname, { irc->send_join_command(iid.get_local(), password); return true; - } else if (!res_in_chan || force_join) { - // See https://github.com/xsf/xeps/pull/499 for the force_join argument + } else { + // See https://github.com/xsf/xeps/pull/499 this->generate_channel_join_for_resource(iid, resource); } return false; diff --git a/src/bridge/bridge.hpp b/src/bridge/bridge.hpp index fa2a31f..8f474e5 100644 --- a/src/bridge/bridge.hpp +++ b/src/bridge/bridge.hpp @@ -72,14 +72,12 @@ public: **/ /** - * Try to join an irc_channel, does nothing and return true if the channel - * was already joined. + * Try to join an irc_channel. */ bool join_irc_channel(const Iid& iid, std::string nickname, const std::string& password, const std::string& resource, - HistoryLimit history_limit, - const bool force_join); + HistoryLimit history_limit); void send_channel_message(const Iid& iid, const std::string& body, std::string id); void send_private_message(const Iid& iid, const std::string& body, const std::string& type="PRIVMSG"); |