diff options
author | louiz’ <louiz@louiz.org> | 2018-03-23 16:16:30 +0100 |
---|---|---|
committer | louiz’ <louiz@louiz.org> | 2018-03-23 16:16:30 +0100 |
commit | e2fc3cf68e1dc145e75fe67f2543765ff00ba839 (patch) | |
tree | 3064b77e3d44deb0e643477382e218893c7389e9 /src/bridge/bridge.cpp | |
parent | cdace80758e2ee41f33824ad7f52a369c42a4a89 (diff) | |
download | biboumi-e2fc3cf68e1dc145e75fe67f2543765ff00ba839.tar.gz biboumi-e2fc3cf68e1dc145e75fe67f2543765ff00ba839.tar.bz2 biboumi-e2fc3cf68e1dc145e75fe67f2543765ff00ba839.tar.xz biboumi-e2fc3cf68e1dc145e75fe67f2543765ff00ba839.zip |
Properly handle force-join presences by sending everything in return
fix #3305
Diffstat (limited to 'src/bridge/bridge.cpp')
-rw-r--r-- | src/bridge/bridge.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/bridge/bridge.cpp b/src/bridge/bridge.cpp index f32ad31..90caac1 100644 --- a/src/bridge/bridge.cpp +++ b/src/bridge/bridge.cpp @@ -166,8 +166,11 @@ 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) +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) { const auto& hostname = iid.get_server(); #ifdef USE_DATABASE @@ -185,7 +188,8 @@ bool Bridge::join_irc_channel(const Iid& iid, std::string nickname, const std::s { irc->send_join_command(iid.get_local(), password); return true; - } else if (!res_in_chan) { + } else if (!res_in_chan || force_join) { + // See https://github.com/xsf/xeps/pull/499 for the force_join argument this->generate_channel_join_for_resource(iid, resource); } return false; |