X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_spanningtree%2Fmain.cpp;h=ee4c4bdd8b656e3d90163ef5ca5f37b6058f90de;hb=f62654a6859998f9d63eb22702c572d5ebcff15c;hp=9a924fea9923d62ca43fdfff1abdf3169e0505c7;hpb=7b0f3072986ae8e6d356afd18e17e90deeb204bd;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_spanningtree/main.cpp b/src/modules/m_spanningtree/main.cpp index 9a924fea9..ee4c4bdd8 100644 --- a/src/modules/m_spanningtree/main.cpp +++ b/src/modules/m_spanningtree/main.cpp @@ -59,20 +59,22 @@ namespace { void SetLocalUsersServer(Server* newserver) { + // Does not change the server of quitting users because those are not in the list + ServerInstance->FakeClient->server = newserver; - const LocalUserList& list = ServerInstance->Users->local_users; - for (LocalUserList::const_iterator i = list.begin(); i != list.end(); ++i) + const UserManager::LocalList& list = ServerInstance->Users.GetLocalUsers(); + for (UserManager::LocalList::const_iterator i = list.begin(); i != list.end(); ++i) (*i)->server = newserver; } void ResetMembershipIds() { // Set all membership ids to 0 - const LocalUserList& list = ServerInstance->Users->local_users; - for (LocalUserList::iterator i = list.begin(); i != list.end(); ++i) + const UserManager::LocalList& list = ServerInstance->Users.GetLocalUsers(); + for (UserManager::LocalList::iterator i = list.begin(); i != list.end(); ++i) { LocalUser* user = *i; - for (UCListIter j = user->chans.begin(); j != user->chans.end(); ++j) + for (User::ChanList::iterator j = user->chans.begin(); j != user->chans.end(); ++j) (*j)->id = 0; } } @@ -189,7 +191,7 @@ restart: { // They did, send a ping to them s->SetNextPingTime(curtime + Utils->PingFreq); - s->GetSocket()->WriteLine(":" + ServerInstance->Config->GetSID() + " PING " + s->GetID()); + s->GetSocket()->WriteLine(CmdBuilder("PING").push(s->GetID())); s->LastPingMsec = ts; } else @@ -419,11 +421,6 @@ ModResult ModuleSpanningTree::HandleConnect(const std::vector& para return MOD_RES_DENY; } -void ModuleSpanningTree::On005Numeric(std::map& tokens) -{ - tokens["MAP"]; -} - void ModuleSpanningTree::OnUserInvite(User* source,User* dest,Channel* channel, time_t expiry) { if (IS_LOCAL(source)) @@ -697,6 +694,7 @@ void ModuleSpanningTree::OnUnloadModule(Module* mod) return; ServerInstance->PI->SendMetaData("modules", "-" + mod->ModuleSourceFile); +restart: // Close all connections which use an IO hook provided by this module const TreeServer::ChildServers& list = Utils->TreeRoot->GetChildren(); for (TreeServer::ChildServers::const_iterator i = list.begin(); i != list.end(); ++i) @@ -706,6 +704,8 @@ void ModuleSpanningTree::OnUnloadModule(Module* mod) { sock->SendError("SSL module unloaded"); sock->Close(); + // XXX: The list we're iterating is modified by TreeSocket::Squit() which is called by Close() + goto restart; } }