From 672e8c5731089e3fe9f250436a98a3d97210a7dd Mon Sep 17 00:00:00 2001 From: Alexey Sokolov Date: Sun, 23 Aug 2015 00:52:27 +0100 Subject: [PATCH] Add OnRawMessage() --- include/znc/Modules.h | 2 ++ src/IRCSock.cpp | 3 +++ src/Modules.cpp | 2 ++ 3 files changed, 7 insertions(+) diff --git a/include/znc/Modules.h b/include/znc/Modules.h index a27a1326..9df08dde 100644 --- a/include/znc/Modules.h +++ b/include/znc/Modules.h @@ -561,6 +561,7 @@ public: * @return See CModule::EModRet. */ virtual EModRet OnRaw(CString& sLine); + virtual EModRet OnRawMessage(CMessage& Message); /** Called when a command to *status is sent. * @param sCommand The command sent. @@ -1196,6 +1197,7 @@ public: bool OnMode(const CNick& OpNick, CChan& Channel, char uMode, const CString& sArg, bool bAdded, bool bNoChange); bool OnRaw(CString& sLine); + bool OnRawMessage(CMessage& Message); bool OnStatusCommand(CString& sCommand); bool OnModCommand(const CString& sCommand); diff --git a/src/IRCSock.cpp b/src/IRCSock.cpp index e45eacf1..f1809f31 100644 --- a/src/IRCSock.cpp +++ b/src/IRCSock.cpp @@ -161,6 +161,9 @@ void CIRCSock::ReadLine(const CString& sData) { CMessage Message(sLine); Message.SetNetwork(m_pNetwork); + IRCSOCKMODULECALL(OnRawMessage(Message), &bReturn); + if (bReturn) return; + CString sCmd = Message.GetCommand(); if (sCmd.Equals("PING")) { diff --git a/src/Modules.cpp b/src/Modules.cpp index 21fa5485..e3846545 100644 --- a/src/Modules.cpp +++ b/src/Modules.cpp @@ -617,6 +617,7 @@ void CModule::OnRawMode(const CNick& pOpNick, CChan& Channel, const CString& sMo void CModule::OnMode(const CNick& pOpNick, CChan& Channel, char uMode, const CString& sArg, bool bAdded, bool bNoChange) {} CModule::EModRet CModule::OnRaw(CString& sLine) { return CONTINUE; } +CModule::EModRet CModule::OnRawMessage(CMessage& Message) { return CONTINUE; } CModule::EModRet CModule::OnStatusCommand(CString& sCommand) { return CONTINUE; } void CModule::OnModNotice(const CString& sMessage) {} @@ -891,6 +892,7 @@ bool CModules::OnRawMode(const CNick& OpNick, CChan& Channel, const CString& sMo bool CModules::OnMode2(const CNick* pOpNick, CChan& Channel, char uMode, const CString& sArg, bool bAdded, bool bNoChange) { MODUNLOADCHK(OnMode2(pOpNick, Channel, uMode, sArg, bAdded, bNoChange)); return false; } bool CModules::OnMode(const CNick& OpNick, CChan& Channel, char uMode, const CString& sArg, bool bAdded, bool bNoChange) { MODUNLOADCHK(OnMode(OpNick, Channel, uMode, sArg, bAdded, bNoChange)); return false; } bool CModules::OnRaw(CString& sLine) { MODHALTCHK(OnRaw(sLine)); } +bool CModules::OnRawMessage(CMessage& Message) { MODHALTCHK(OnRawMessage(Message)); } bool CModules::OnClientLogin() { MODUNLOADCHK(OnClientLogin()); return false; } bool CModules::OnClientDisconnect() { MODUNLOADCHK(OnClientDisconnect()); return false; }