diff --git a/modules/ctcpflood.cpp b/modules/ctcpflood.cpp index 8ebe9aff..3ab5483c 100644 --- a/modules/ctcpflood.cpp +++ b/modules/ctcpflood.cpp @@ -82,13 +82,12 @@ class CCtcpFloodMod : public CModule { return HALT; } - EModRet OnPrivCTCP(CNick& Nick, CString& sMessage) override { - return Message(Nick, sMessage); + EModRet OnPrivCTCPMessage(CCTCPMessage& CTCPMessage) override { + return Message(CTCPMessage.GetNick(), CTCPMessage.GetText()); } - EModRet OnChanCTCP(CNick& Nick, CChan& Channel, - CString& sMessage) override { - return Message(Nick, sMessage); + EModRet OnChanCTCPMessage(CCTCPMessage& CTCPMessage) override { + return Message(CTCPMessage.GetNick(), CTCPMessage.GetText()); } void OnSecsCommand(const CString& sCommand) { diff --git a/test/integration/tests/modules.cpp b/test/integration/tests/modules.cpp index 3d5ca854..0c6e15d9 100644 --- a/test/integration/tests/modules.cpp +++ b/test/integration/tests/modules.cpp @@ -797,5 +797,28 @@ TEST_F(ZNCTest, ClearBufferOnMsgModule) { << "OnUserTopicMessage failed to clear buffer"; } +TEST_F(ZNCTest, CtcpFloodModule) { + auto znc = Run(); + auto ircd = ConnectIRCd(); + auto client = LoginClient(); + + client.Write("znc loadmod ctcpflood"); + client.ReadUntil("Loaded module"); + + ircd.Write(":server 001 nick :Hello"); + ircd.Write(":nick JOIN :#test"); + ircd.Write(":server 353 nick = #test :nick someone"); + ircd.Write(":server 366 nick #test :End of /NAMES list"); + + ircd.Write(":someone!user@host PRIVMSG #test :\001message1\001"); + ircd.Write(":someone!user@host PRIVMSG #test :\001message2\001"); + ircd.Write(":someone!user@host PRIVMSG #test :\001message3\001"); + ircd.Write(":someone!user@host PRIVMSG #test :\001message4\001"); + ircd.Write(":someone!user@host PRIVMSG #test :\001message5\001"); + ircd.Write(":someone!user@host PRIVMSG #test :\001message6\001"); + ircd.Write(":someone!user@host PRIVMSG #test :\001message7\001"); + client.ReadUntil("Limit reached by"); +} + } // namespace } // namespace znc_inttest