diff --git a/User.cpp b/User.cpp index f606e244..526fc05a 100644 --- a/User.cpp +++ b/User.cpp @@ -699,9 +699,9 @@ bool CUser::PutIRC(const CString& sLine) { return true; } -bool CUser::PutUser(const CString& sLine, CUserSock* pUserSock) { +bool CUser::PutUser(const CString& sLine, CUserSock* pUserSock, CUserSock* pSkipClient) { for (unsigned int a = 0; a < m_vUserSocks.size(); a++) { - if (!pUserSock || pUserSock == m_vUserSocks[a]) { + if ((!pUserSock || pUserSock == m_vUserSocks[a]) && pSkipClient != m_vUserSocks[a]) { m_vUserSocks[a]->PutServ(sLine); if (pUserSock) { @@ -713,9 +713,9 @@ bool CUser::PutUser(const CString& sLine, CUserSock* pUserSock) { return (pUserSock == NULL); } -bool CUser::PutStatus(const CString& sLine, CUserSock* pUserSock) { +bool CUser::PutStatus(const CString& sLine, CUserSock* pUserSock, CUserSock* pSkipClient) { for (unsigned int a = 0; a < m_vUserSocks.size(); a++) { - if (!pUserSock || pUserSock == m_vUserSocks[a]) { + if ((!pUserSock || pUserSock == m_vUserSocks[a]) && pSkipClient != m_vUserSocks[a]) { m_vUserSocks[a]->PutStatus(sLine); if (pUserSock) { @@ -727,9 +727,9 @@ bool CUser::PutStatus(const CString& sLine, CUserSock* pUserSock) { return (pUserSock == NULL); } -bool CUser::PutStatusNotice(const CString& sLine, CUserSock* pUserSock) { +bool CUser::PutStatusNotice(const CString& sLine, CUserSock* pUserSock, CUserSock* pSkipClient) { for (unsigned int a = 0; a < m_vUserSocks.size(); a++) { - if (!pUserSock || pUserSock == m_vUserSocks[a]) { + if ((!pUserSock || pUserSock == m_vUserSocks[a]) && pSkipClient != m_vUserSocks[a]) { m_vUserSocks[a]->PutStatusNotice(sLine); if (pUserSock) { @@ -741,9 +741,9 @@ bool CUser::PutStatusNotice(const CString& sLine, CUserSock* pUserSock) { return (pUserSock == NULL); } -bool CUser::PutModule(const CString& sModule, const CString& sLine, CUserSock* pUserSock) { +bool CUser::PutModule(const CString& sModule, const CString& sLine, CUserSock* pUserSock, CUserSock* pSkipClient) { for (unsigned int a = 0; a < m_vUserSocks.size(); a++) { - if (!pUserSock || pUserSock == m_vUserSocks[a]) { + if ((!pUserSock || pUserSock == m_vUserSocks[a]) && pSkipClient != m_vUserSocks[a]) { m_vUserSocks[a]->PutModule(sModule, sLine); if (pUserSock) { diff --git a/User.h b/User.h index cefafbdb..a5b70b7e 100644 --- a/User.h +++ b/User.h @@ -69,10 +69,10 @@ public: bool OnBoot(); bool PutIRC(const CString& sLine); - bool PutUser(const CString& sLine, CUserSock* pUserSock = NULL); - bool PutStatus(const CString& sLine, CUserSock* pUserSock = NULL); - bool PutStatusNotice(const CString& sLine, CUserSock* pUserSock = NULL); - bool PutModule(const CString& sModule, const CString& sLine, CUserSock* pUserSock = NULL); + bool PutUser(const CString& sLine, CUserSock* pUserSock = NULL, CUserSock* pSkipClient = NULL); + bool PutStatus(const CString& sLine, CUserSock* pUserSock = NULL, CUserSock* pSkipClient = NULL); + bool PutStatusNotice(const CString& sLine, CUserSock* pUserSock = NULL, CUserSock* pSkipClient = NULL); + bool PutModule(const CString& sModule, const CString& sLine, CUserSock* pUserSock = NULL, CUserSock* pSkipClient = NULL); bool IsUserAttached() { return (m_vUserSocks.size() > 0); } void UserConnected(CUserSock* pUserSock);