]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_close.cpp
Fix iteration of ServerInstance->Users->local_users now that QuitUser can modify...
[user/henk/code/inspircd.git] / src / modules / m_close.cpp
index e81c29d20fe459505aab313e07197e48f4774969..009d50d463ce63e94e8330c40635ca104ca8c4a8 100644 (file)
@@ -37,12 +37,14 @@ class CommandClose : public Command
        {
                std::map<std::string,int> closed;
 
-               for (std::vector<User*>::iterator u = ServerInstance->Users->local_users.begin(); u != ServerInstance->Users->local_users.end(); u++)
+               std::vector<User*>::reverse_iterator u = ServerInstance->Users->local_users.rbegin();
+               while (u != ServerInstance->Users->local_users.rend())
                {
-                       if ((*u)->registered != REG_ALL)
+                       User* user = *u++;
+                       if (user->registered != REG_ALL)
                        {
-                               ServerInstance->Users->QuitUser(*u, "Closing all unknown connections per request");
-                               std::string key = ConvToStr((*u)->GetIPString())+"."+ConvToStr((*u)->GetServerPort());
+                               ServerInstance->Users->QuitUser(user, "Closing all unknown connections per request");
+                               std::string key = ConvToStr(user->GetIPString())+"."+ConvToStr(user->GetServerPort());
                                closed[key]++;
                        }
                }