diff --git a/include/znc/IRCSock.h b/include/znc/IRCSock.h index a5adbb72..7edd44fd 100644 --- a/include/znc/IRCSock.h +++ b/include/znc/IRCSock.h @@ -63,6 +63,7 @@ public: bool OnQuitMessage(CQuitMessage& Message); bool OnTextMessage(CTextMessage& Message); bool OnTopicMessage(CTopicMessage& Message); + bool OnWallopsMessage(CMessage& Message); bool OnServerCapAvailable(const CString& sCap); // !Message Handlers diff --git a/src/IRCSock.cpp b/src/IRCSock.cpp index 56bc788e..54aee6a9 100644 --- a/src/IRCSock.cpp +++ b/src/IRCSock.cpp @@ -592,11 +592,8 @@ void CIRCSock::ReadLine(const CString& sData) { return; } } else if (Message.GetType() == CMessage::Type::Wallops) { - // :blub!dummy@rox-8DBEFE92 WALLOPS :this is a test - CString sMsg = Message.GetParam(0); - - if (!m_pNetwork->IsUserOnline()) { - m_pNetwork->AddNoticeBuffer(":" + _NAMEDFMT(Nick.GetNickMask()) + " WALLOPS :{text}", sMsg); + if (OnWallopsMessage(Message)) { + return; } } else if (Message.GetType() == CMessage::Type::Capability) { if (OnCapabilityMessage(Message)) { @@ -1097,6 +1094,16 @@ bool CIRCSock::OnTopicMessage(CTopicMessage& Message) { return (pChan && pChan->IsDetached()); } +bool CIRCSock::OnWallopsMessage(CMessage& Message) { + // :blub!dummy@rox-8DBEFE92 WALLOPS :this is a test + CString sMsg = Message.GetParam(0); + + if (!m_pNetwork->IsUserOnline()) { + m_pNetwork->AddNoticeBuffer(":" + _NAMEDFMT(Message.GetNick().GetNickMask()) + " WALLOPS :{text}", sMsg); + } + return false; +} + void CIRCSock::PutIRC(const CString& sLine) { // Only print if the line won't get sent immediately (same condition as in TrySend()!) if (m_bFloodProtection && m_iSendsAllowed <= 0) {