diff --git a/Modules.cpp b/Modules.cpp index 417cf44c..b9b80414 100644 --- a/Modules.cpp +++ b/Modules.cpp @@ -480,6 +480,7 @@ CString CModule::GetModNick() const { return ((m_pUser) ? m_pUser->GetStatusPref bool CModule::OnLoad(const CString& sArgs, CString& sMessage) { sMessage = ""; return true; } bool CModule::OnBoot() { return true; } +void CModule::OnRehashDone() {} void CModule::OnIRCDisconnected() {} void CModule::OnIRCConnected() {} CModule::EModRet CModule::OnBroadcast(CString& sMessage) { return CONTINUE; } @@ -585,6 +586,7 @@ bool CModules::OnBoot() { return true; } +bool CModules::OnRehashDone() { MODUNLOADCHK(OnRehashDone()); return false; } bool CModules::OnIRCConnected() { MODUNLOADCHK(OnIRCConnected()); return false; } bool CModules::OnBroadcast(CString& sMessage) { MODHALTCHK(OnBroadcast(sMessage)); } bool CModules::OnIRCDisconnected() { MODUNLOADCHK(OnIRCDisconnected()); return false; } diff --git a/Modules.h b/Modules.h index cd099f3b..952241bf 100644 --- a/Modules.h +++ b/Modules.h @@ -225,6 +225,7 @@ public: virtual bool OnLoad(const CString& sArgsi, CString& sMessage); virtual bool OnBoot(); + virtual void OnRehashDone(); virtual void OnIRCDisconnected(); virtual void OnIRCConnected(); virtual EModRet OnBroadcast(CString& sMessage); @@ -359,6 +360,7 @@ public: void UnloadAll(); virtual bool OnBoot(); // Return false to abort + virtual bool OnRehashDone(); virtual bool OnIRCDisconnected(); virtual bool OnIRCConnected(); virtual bool OnBroadcast(CString& sMessage); diff --git a/znc.cpp b/znc.cpp index d6993cba..d4dc332d 100644 --- a/znc.cpp +++ b/znc.cpp @@ -837,6 +837,14 @@ bool CZNC::RehashConfig(CString& sError) m_msUsers.clear(); if (DoRehash(sError)) { +#ifdef _MODULES + GetModules().OnRehashDone(); + for (map::iterator it = m_msUsers.begin(); + it != m_msUsers.end(); it++) { + it->second->GetModules().OnRehashDone(); + } +#endif + return true; }