diff --git a/include/znc/IRCSock.h b/include/znc/IRCSock.h index 9e5e587f..059c4eec 100644 --- a/include/znc/IRCSock.h +++ b/include/znc/IRCSock.h @@ -53,6 +53,7 @@ public: bool OnActionMessage(CActionMessage& Message); bool OnAwayMessage(CMessage& Message); bool OnCTCPMessage(CCTCPMessage& Message); + bool OnInviteMessage(CMessage& Message); bool OnJoinMessage(CJoinMessage& Message); bool OnKickMessage(CKickMessage& Message); bool OnNickMessage(CNickMessage& Message); diff --git a/src/IRCSock.cpp b/src/IRCSock.cpp index d5da674c..99f79b9e 100644 --- a/src/IRCSock.cpp +++ b/src/IRCSock.cpp @@ -663,8 +663,9 @@ void CIRCSock::ReadLine(const CString& sData) { // Don't forward any CAP stuff to the client return; } else if (Message.GetType() == CMessage::Type::Invite) { - IRCSOCKMODULECALL(OnInvite(Nick, sLine.Token(3).TrimPrefix_n(":")), &bReturn); - if (bReturn) return; + if (OnInviteMessage(Message)) { + return; + } } else if (Message.GetType() == CMessage::Type::Away) { if (OnAwayMessage(Message)) { return; @@ -846,6 +847,12 @@ bool CIRCSock::OnCTCPMessage(CCTCPMessage& Message) { return (pChan && pChan->IsDetached()); } +bool CIRCSock::OnInviteMessage(CMessage& Message) { + bool bResult = false; + IRCSOCKMODULECALL(OnInvite(Message.GetNick(), Message.GetParam(1)), &bResult); + return bResult; +} + bool CIRCSock::OnJoinMessage(CJoinMessage& Message) { const CNick& Nick = Message.GetNick(); CString sChan = Message.GetParam(0);