diff options
author | Florent Le Coz <louiz@louiz.org> | 2014-08-08 00:47:05 +0200 |
---|---|---|
committer | Florent Le Coz <louiz@louiz.org> | 2014-08-08 00:47:05 +0200 |
commit | 41e8a3ba9b57e67aec5d0d30112338664afbd6e4 (patch) | |
tree | fa75cc0aa7206a8f277c612adbff818faae18cd1 /src/irc/irc_client.cpp | |
parent | e3ea0d62c79cf74e154f24d7f5a0fa8c7d26d73b (diff) | |
download | biboumi-41e8a3ba9b57e67aec5d0d30112338664afbd6e4.tar.gz biboumi-41e8a3ba9b57e67aec5d0d30112338664afbd6e4.tar.bz2 biboumi-41e8a3ba9b57e67aec5d0d30112338664afbd6e4.tar.xz biboumi-41e8a3ba9b57e67aec5d0d30112338664afbd6e4.zip |
Send a proper error on IRC message 438 (nickname change too fast)
fix #2576
Diffstat (limited to 'src/irc/irc_client.cpp')
-rw-r--r-- | src/irc/irc_client.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/irc/irc_client.cpp b/src/irc/irc_client.cpp index 678cac8..f9ebfa0 100644 --- a/src/irc/irc_client.cpp +++ b/src/irc/irc_client.cpp @@ -478,6 +478,25 @@ void IrcClient::on_nickname_conflict(const IrcMessage& message) } } +void IrcClient::on_nickname_change_too_fast(const IrcMessage& message) +{ + const std::string nickname = message.arguments[1]; + std::string txt; + if (message.arguments.size() >= 3) + txt = message.arguments[2]; + this->on_generic_error(message); + for (auto it = this->channels.begin(); it != this->channels.end(); ++it) + { + Iid iid; + iid.set_local(it->first); + iid.set_server(this->hostname); + iid.is_channel = true; + this->bridge->send_presence_error(iid, nickname, + "cancel", "not-acceptable", + "", txt); + } +} + void IrcClient::on_generic_error(const IrcMessage& message) { const std::string error_msg = message.arguments.size() >= 3 ? |