X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules.cpp;h=42a9e80102b620507a52a6c738879d0e1ae91de5;hb=ab9c42107fb1c1dcc013d3269270b1900d752b96;hp=2825b2d0ea3ea8105e92cc40b3be24bef655428d;hpb=82435b6fa8805baa65e04a582f3e4a2c84237f73;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules.cpp b/src/modules.cpp index 2825b2d0e..42a9e8010 100644 --- a/src/modules.cpp +++ b/src/modules.cpp @@ -33,11 +33,9 @@ #endif static intrusive_list* dynrefs = NULL; -static bool dynref_init_complete = false; void dynamic_reference_base::reset_all() { - dynref_init_complete = true; if (!dynrefs) return; for (intrusive_list::iterator i = dynrefs->begin(); i != dynrefs->end(); ++i) @@ -95,7 +93,7 @@ void Module::OnInfo(User*) { DetachEvent(I_OnInfo); } void Module::OnWhois(User*, User*) { DetachEvent(I_OnWhois); } ModResult Module::OnUserPreInvite(User*, User*, Channel*, time_t) { DetachEvent(I_OnUserPreInvite); return MOD_RES_PASSTHRU; } ModResult Module::OnUserPreMessage(User*, void*, int, std::string&, char, CUList&, MessageType) { DetachEvent(I_OnUserPreMessage); return MOD_RES_PASSTHRU; } -ModResult Module::OnUserPreNick(User*, const std::string&) { DetachEvent(I_OnUserPreNick); return MOD_RES_PASSTHRU; } +ModResult Module::OnUserPreNick(LocalUser*, const std::string&) { DetachEvent(I_OnUserPreNick); return MOD_RES_PASSTHRU; } void Module::OnUserPostNick(User*, const std::string&) { DetachEvent(I_OnUserPostNick); } ModResult Module::OnPreMode(User*, User*, Channel*, const std::vector&) { DetachEvent(I_OnPreMode); return MOD_RES_PASSTHRU; } void Module::On005Numeric(std::map&) { DetachEvent(I_On005Numeric); } @@ -393,8 +391,8 @@ void ModuleManager::DoSafeUnload(Module* mod) ++c; mod->OnCleanup(TYPE_CHANNEL, chan); chan->doUnhookExtensions(items); - const UserMembList* users = chan->GetUsers(); - for(UserMembCIter mi = users->begin(); mi != users->end(); mi++) + const Channel::MemberMap& users = chan->GetUsers(); + for (Channel::MemberMap::const_iterator mi = users.begin(); mi != users.end(); ++mi) mi->second->doUnhookExtensions(items); } @@ -517,7 +515,7 @@ void ModuleManager::Reload(Module* mod, HandlerBase1* callback) { if (CanUnload(mod)) ServerInstance->AtomicActions.AddAction(new ReloadAction(mod, callback)); - else + else if (callback) callback->Call(false); } @@ -674,7 +672,9 @@ dynamic_reference_base::dynamic_reference_base(Module* Creator, const std::strin if (!dynrefs) dynrefs = new intrusive_list; dynrefs->push_front(this); - if (dynref_init_complete) + + // Resolve unless there is no ModuleManager (part of class InspIRCd) + if (ServerInstance) resolve(); }