From a56d4cae6a7346dcd1ee2b3daee8e0948b6131a7 Mon Sep 17 00:00:00 2001 From: Thomas Kriechbaumer Date: Sat, 21 Mar 2015 15:22:43 +0000 Subject: [PATCH] do not call OnAddUser hook during ZNC startup --- include/znc/znc.h | 2 +- src/znc.cpp | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/include/znc/znc.h b/include/znc/znc.h index 347ad472..d6acba8d 100644 --- a/include/znc/znc.h +++ b/include/znc/znc.h @@ -154,7 +154,7 @@ public: bool UpdateModule(const CString &sModule); bool DeleteUser(const CString& sUsername); - bool AddUser(CUser* pUser, CString& sErrorRet); + bool AddUser(CUser* pUser, CString& sErrorRet, bool bStartup = false); const std::map & GetUserMap() const { return(m_msUsers); } // Listener yummy diff --git a/src/znc.cpp b/src/znc.cpp index e776c649..5124b40c 100644 --- a/src/znc.cpp +++ b/src/znc.cpp @@ -1168,7 +1168,7 @@ bool CZNC::LoadUsers(CConfig& config, CString& sError) { } CString sErr; - if (!AddUser(pUser, sErr)) { + if (!AddUser(pUser, sErr, true)) { sError = "Invalid user [" + pUser->GetUserName() + "] " + sErr; } @@ -1466,7 +1466,7 @@ bool CZNC::DeleteUser(const CString& sUsername) { return true; } -bool CZNC::AddUser(CUser* pUser, CString& sErrorRet) { +bool CZNC::AddUser(CUser* pUser, CString& sErrorRet, bool bStartup) { if (FindUser(pUser->GetUserName()) != nullptr) { sErrorRet = "User already exists"; DEBUG("User [" << pUser->GetUserName() << "] - already exists"); @@ -1478,7 +1478,12 @@ bool CZNC::AddUser(CUser* pUser, CString& sErrorRet) { return false; } bool bFailed = false; - GLOBALMODULECALL(OnAddUser(*pUser, sErrorRet), &bFailed); + + // do not call OnAddUser hook during ZNC startup + if (!bStartup) { + GLOBALMODULECALL(OnAddUser(*pUser, sErrorRet), &bFailed); + } + if (bFailed) { DEBUG("AddUser [" << pUser->GetUserName() << "] aborted by a module [" << sErrorRet << "]");