From 4792c70635cd73d581861a6da9794655a5e72099 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?louiz=E2=80=99?= Date: Tue, 13 Dec 2016 14:48:41 +0100 Subject: Send a presence error from the room, when receiving command ERR_BADCHANNELKEY fix #2886 --- src/irc/irc_client.cpp | 14 +++++++++++++- src/irc/irc_client.hpp | 1 + 2 files changed, 14 insertions(+), 1 deletion(-) (limited to 'src/irc') diff --git a/src/irc/irc_client.cpp b/src/irc/irc_client.cpp index b13e5ab..ba13c6a 100644 --- a/src/irc/irc_client.cpp +++ b/src/irc/irc_client.cpp @@ -66,6 +66,7 @@ static const std::unordered_mapon_user_mode(message); } +void IrcClient::on_channel_bad_key(const IrcMessage& message) +{ + this->on_generic_error(message); + const std::string& nickname = message.arguments[0]; + const std::string& channel = message.arguments[1]; + std::string text; + if (message.arguments.size() > 2) + text = message.arguments[2]; + + this->bridge.send_presence_error({channel, this->hostname, Iid::Type::Channel}, nickname, "auth", "not-authorized", "", text); +} + void IrcClient::on_channel_mode(const IrcMessage& message) { // For now, just transmit the modes so the user can know what happens diff --git a/src/irc/irc_client.hpp b/src/irc/irc_client.hpp index 4edc32c..4b942ad 100644 --- a/src/irc/irc_client.hpp +++ b/src/irc/irc_client.hpp @@ -257,6 +257,7 @@ public: void on_nick(const IrcMessage& message); void on_kick(const IrcMessage& message); void on_mode(const IrcMessage& message); + void on_channel_bad_key(const IrcMessage& message); /** * A mode towards our own user is received (note, that is different from a * channel mode towards or own nick, see -- cgit v1.2.3