]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Erase local users from UserManager::local_list in QuitUser()
authorAttila Molnar <attilamolnar@hush.com>
Sat, 19 Jul 2014 12:16:15 +0000 (14:16 +0200)
committerAttila Molnar <attilamolnar@hush.com>
Sat, 19 Jul 2014 12:16:15 +0000 (14:16 +0200)
src/modules/m_spanningtree/main.cpp
src/usermanager.cpp
src/users.cpp

index 3393539cc735d9d7059e8d2ef34b8cfd9bf2d790..979048d65fd9f08e98d0efa4a8fc0200b1c3822d 100644 (file)
@@ -59,6 +59,8 @@ 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)
index 37f64b9d2904d6d3b701f12c67bca2f721316a1a..9c04c7889874830e683ea42a4d4649329f6083e4 100644 (file)
@@ -193,6 +193,7 @@ void UserManager::QuitUser(User* user, const std::string& quitreason, const std:
 
                if (lu->registered == REG_ALL)
                        ServerInstance->SNO->WriteToSnoMask('q',"Client exiting: %s (%s) [%s]", user->GetFullRealHost().c_str(), user->GetIPString().c_str(), operreason->c_str());
+               local_users.erase(lu);
        }
 
        if (!clientlist.erase(user->nick))
@@ -287,9 +288,6 @@ void UserManager::DoBackgroundUserStuff()
        {
                LocalUser* curr = *i;
 
-               if (curr->quitting)
-                       continue;
-
                if (curr->CommandFloodPenalty || curr->eh.getSendQSize())
                {
                        unsigned int rate = curr->MyClass->GetCommandRate();
index 246efd7cf868f85f12e806b6bb0ab3bcd0eb706f..3f82b850c9c270e67fcc6fffe4137a292f41617f 100644 (file)
@@ -330,7 +330,6 @@ CullResult User::cull()
 
 CullResult LocalUser::cull()
 {
-       ServerInstance->Users->local_users.erase(this);
        ClearInvites();
        eh.cull();
        return User::cull();