From d556a29218d4c450fcf435198c3afad0e6bdf64f Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Sat, 5 Sep 2015 02:44:59 +0200 Subject: [PATCH] CIRCSock::OnAwayMessage() handler --- include/znc/IRCSock.h | 1 + src/IRCSock.cpp | 18 ++++++++++++------ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/include/znc/IRCSock.h b/include/znc/IRCSock.h index de135110..054c5bfb 100644 --- a/include/znc/IRCSock.h +++ b/include/znc/IRCSock.h @@ -50,6 +50,7 @@ public: // Message Handlers bool OnActionMessage(CActionMessage& Message); + bool OnAwayMessage(CMessage& Message); bool OnCTCPMessage(CCTCPMessage& Message); bool OnJoinMessage(CJoinMessage& Message); bool OnKickMessage(CKickMessage& Message); diff --git a/src/IRCSock.cpp b/src/IRCSock.cpp index 71c61fc8..faea121c 100644 --- a/src/IRCSock.cpp +++ b/src/IRCSock.cpp @@ -666,13 +666,9 @@ void CIRCSock::ReadLine(const CString& sData) { IRCSOCKMODULECALL(OnInvite(Nick, sLine.Token(3).TrimPrefix_n(":")), &bReturn); if (bReturn) return; } else if (Message.GetType() == CMessage::Type::Away) { - const vector& vClients = m_pNetwork->GetClients(); - for (CClient* pClient : vClients) { - if (pClient->HasAwayNotify()) { - m_pNetwork->PutUser(sLine, pClient); - } + if (OnAwayMessage(Message)) { + return; } - return; } else if (Message.GetType() == CMessage::Type::Account) { const vector& vClients = m_pNetwork->GetClients(); for (CClient* pClient : vClients) { @@ -767,6 +763,16 @@ bool CIRCSock::OnActionMessage(CActionMessage& Message) { return (pChan && pChan->IsDetached()); } +bool CIRCSock::OnAwayMessage(CMessage& Message) { + const vector& vClients = m_pNetwork->GetClients(); + for (CClient* pClient : vClients) { + if (pClient->HasAwayNotify()) { + m_pNetwork->PutUser(Message, pClient); + } + } + return true; +} + bool CIRCSock::OnCTCPMessage(CCTCPMessage& Message) { bool bResult = false; CChan* pChan = nullptr;