aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules/m_close.cpp
diff options
context:
space:
mode:
authorGravatar Attila Molnar2015-05-17 18:00:42 +0200
committerGravatar Attila Molnar2015-05-17 18:00:42 +0200
commitb28782c4a3cd52587d61541bcca4e0b217685c54 (patch)
tree6e2a88b2907821a2ab3c964e582a35cd54066983 /src/modules/m_close.cpp
parentMerge pull request #1048 from SaberUK/master+ipv6-stats (diff)
downloadinspircd++-b28782c4a3cd52587d61541bcca4e0b217685c54.tar.gz
inspircd++-b28782c4a3cd52587d61541bcca4e0b217685c54.tar.bz2
inspircd++-b28782c4a3cd52587d61541bcca4e0b217685c54.zip
Fix incorrect iterator use leading to prematurely exiting loops when quitting users while looping the local user list
Diffstat (limited to 'src/modules/m_close.cpp')
-rw-r--r--src/modules/m_close.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/modules/m_close.cpp b/src/modules/m_close.cpp
index f3c751f17..3f0eedaaf 100644
--- a/src/modules/m_close.cpp
+++ b/src/modules/m_close.cpp
@@ -36,9 +36,11 @@ class CommandClose : public Command
std::map<std::string,int> closed;
const UserManager::LocalList& list = ServerInstance->Users.GetLocalUsers();
- for (UserManager::LocalList::const_iterator u = list.begin(); u != list.end(); ++u)
+ for (UserManager::LocalList::const_iterator u = list.begin(); u != list.end(); )
{
+ // Quitting the user removes it from the list
LocalUser* user = *u;
+ ++u;
if (user->registered != REG_ALL)
{
ServerInstance->Users->QuitUser(user, "Closing all unknown connections per request");