diff --git a/include/znc/IRCSock.h b/include/znc/IRCSock.h index 91247beb..2ef30974 100644 --- a/include/znc/IRCSock.h +++ b/include/znc/IRCSock.h @@ -54,6 +54,7 @@ public: bool OnAwayMessage(CMessage& Message); bool OnCapabilityMessage(CMessage& Message); bool OnCTCPMessage(CCTCPMessage& Message); + bool OnErrorMessage(CMessage& Message); bool OnInviteMessage(CMessage& Message); bool OnJoinMessage(CJoinMessage& Message); bool OnKickMessage(CKickMessage& Message); diff --git a/src/IRCSock.cpp b/src/IRCSock.cpp index fea74b19..ab3efef6 100644 --- a/src/IRCSock.cpp +++ b/src/IRCSock.cpp @@ -174,13 +174,10 @@ void CIRCSock::ReadLine(const CString& sData) { return; } } else if (Message.GetType() == CMessage::Type::Error) { - //ERROR :Closing Link: nick[24.24.24.24] (Excess Flood) - CString sError = Message.GetParam(0); - m_pNetwork->PutStatus("Error from Server [" + sError + "]"); - return; - } - - if (Message.GetType() == CMessage::Type::Numeric) { + if (OnErrorMessage(Message)) { + return; + } + } else if (Message.GetType() == CMessage::Type::Numeric) { CNumericMessage& NumericMsg = static_cast(Message); if (OnNumericMessage(NumericMsg)) { return; @@ -502,6 +499,13 @@ bool CIRCSock::OnCTCPMessage(CCTCPMessage& Message) { return (pChan && pChan->IsDetached()); } +bool CIRCSock::OnErrorMessage(CMessage& Message) { + //ERROR :Closing Link: nick[24.24.24.24] (Excess Flood) + CString sError = Message.GetParam(0); + m_pNetwork->PutStatus("Error from Server [" + sError + "]"); + return true; +} + bool CIRCSock::OnInviteMessage(CMessage& Message) { bool bResult = false; IRCSOCKMODULECALL(OnInvite(Message.GetNick(), Message.GetParam(1)), &bResult);