diff --git a/IRCNetwork.cpp b/IRCNetwork.cpp index 16ccc494..66a000e9 100644 --- a/IRCNetwork.cpp +++ b/IRCNetwork.cpp @@ -460,6 +460,20 @@ bool CIRCNetwork::PutStatus(const CString& sLine, CClient* pClient, CClient* pSk return (pClient == NULL); } +bool CIRCNetwork::PutModule(const CString& sModule, const CString& sLine, CClient* pClient, CClient* pSkipClient) { + for (unsigned int a = 0; a < m_vClients.size(); a++) { + if ((!pClient || pClient == m_vClients[a]) && pSkipClient != m_vClients[a]) { + m_vClients[a]->PutModule(sModule, sLine); + + if (pClient) { + return true; + } + } + } + + return (pClient == NULL); +} + // Channels const vector& CIRCNetwork::GetChans() const { return m_vChans; } diff --git a/IRCNetwork.h b/IRCNetwork.h index 2566e625..20537cde 100644 --- a/IRCNetwork.h +++ b/IRCNetwork.h @@ -61,6 +61,7 @@ public: bool PutUser(const CString& sLine, CClient* pClient = NULL, CClient* pSkipClient = NULL); bool PutStatus(const CString& sLine, CClient* pClient = NULL, CClient* pSkipClient = NULL); + bool PutModule(const CString& sModule, const CString& sLine, CClient* pClient = NULL, CClient* pSkipClient = NULL); const vector& GetChans() const; CChan* FindChan(const CString& sName) const; diff --git a/Modules.cpp b/Modules.cpp index 90547251..7d1a9fec 100644 --- a/Modules.cpp +++ b/Modules.cpp @@ -567,15 +567,20 @@ unsigned int CModule::PutModule(const CTable& table) { return idx - 1; } bool CModule::PutModule(const CString& sLine) { - if (!m_pUser) - return false; - if (m_pClient) { m_pClient->PutModule(GetModName(), sLine); return true; } - return m_pUser->PutModule(GetModName(), sLine); + if (m_pNetwork) { + return m_pNetwork->PutModule(GetModName(), sLine); + } + + if (m_pUser) { + return m_pUser->PutModule(GetModName(), sLine); + } + + return false; } bool CModule::PutModNotice(const CString& sLine) { if (!m_pUser)