summaryrefslogtreecommitdiff
path: root/src/irc
diff options
context:
space:
mode:
authorFlorent Le Coz <louiz@louiz.org>2015-05-19 06:00:07 +0200
committerFlorent Le Coz <louiz@louiz.org>2015-05-19 06:21:59 +0200
commitfa466f33f4c8009e69fe0ebf31c7eef1c394377b (patch)
tree9d6f52a43d0e04962b5aed574c7b9690ff868104 /src/irc
parent2195292919110bad41f507f45fa1b7d86a369539 (diff)
downloadbiboumi-fa466f33f4c8009e69fe0ebf31c7eef1c394377b.tar.gz
biboumi-fa466f33f4c8009e69fe0ebf31c7eef1c394377b.tar.bz2
biboumi-fa466f33f4c8009e69fe0ebf31c7eef1c394377b.tar.xz
biboumi-fa466f33f4c8009e69fe0ebf31c7eef1c394377b.zip
Ignore commands that flood the user with private messages when listing chans
ref #2472
Diffstat (limited to 'src/irc')
-rw-r--r--src/irc/irc_client.cpp12
-rw-r--r--src/irc/irc_client.hpp23
2 files changed, 35 insertions, 0 deletions
diff --git a/src/irc/irc_client.cpp b/src/irc/irc_client.cpp
index 5f6aaaf..d048e47 100644
--- a/src/irc/irc_client.cpp
+++ b/src/irc/irc_client.cpp
@@ -459,6 +459,18 @@ void IrcClient::on_channel_message(const IrcMessage& message)
this->bridge->send_message(iid, nick, body, muc);
}
+void IrcClient::on_rpl_liststart(const IrcMessage&)
+{
+}
+
+void IrcClient::on_rpl_list(const IrcMessage&)
+{
+}
+
+void IrcClient::on_rpl_listend(const IrcMessage&)
+{
+}
+
void IrcClient::empty_motd(const IrcMessage& message)
{
(void)message;
diff --git a/src/irc/irc_client.hpp b/src/irc/irc_client.hpp
index 4ab0fcb..0d1604d 100644
--- a/src/irc/irc_client.hpp
+++ b/src/irc/irc_client.hpp
@@ -152,6 +152,23 @@ public:
*/
void set_and_forward_user_list(const IrcMessage& message);
/**
+ * Signal the start of the LIST response. The RFC says its obsolete and
+ * “not used”, but I we receive it on some servers, so just ignore it.
+ */
+ void on_rpl_liststart(const IrcMessage& message);
+ /**
+ * A single LIST response line (one channel)
+ *
+ * The command is handled in a wait_irc callback. This general handler is
+ * empty and just used to avoid sending a message stanza for each received
+ * channel.
+ */
+ void on_rpl_list(const IrcMessage& message);
+ /**
+ * Signal the end of the LIST response, ignore.
+ */
+ void on_rpl_listend(const IrcMessage& message);
+ /**
* Remember our nick and host, when we are joined to the channel. The list
* of user comes after so we do not send the self-presence over XMPP yet.
*/
@@ -324,6 +341,12 @@ static const std::unordered_map<std::string, irc_callback_t> irc_callbacks = {
{"002", &IrcClient::forward_server_message},
{"003", &IrcClient::forward_server_message},
{"005", &IrcClient::on_isupport_message},
+ {"RPL_LISTSTART", &IrcClient::on_rpl_liststart},
+ {"321", &IrcClient::on_rpl_liststart},
+ {"RPL_LIST", &IrcClient::on_rpl_list},
+ {"322", &IrcClient::on_rpl_list},
+ {"RPL_LISTEND", &IrcClient::on_rpl_listend},
+ {"323", &IrcClient::on_rpl_listend},
{"RPL_MOTDSTART", &IrcClient::empty_motd},
{"375", &IrcClient::empty_motd},
{"RPL_MOTD", &IrcClient::on_motd_line},