]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/usermanager.cpp
Remove users from uuidlist on QuitUser, not during cull (allows UID reuse on fast...
[user/henk/code/inspircd.git] / src / usermanager.cpp
index 1e3e9fa72ef35e1f6a19d86b4ecc1fc9437501b6..9f5f8c9378e45f50f280e8b6452b9cec4ba2e91b 100644 (file)
@@ -2,7 +2,7 @@
  *       | Inspire Internet Relay Chat Daemon |
  *       +------------------------------------+
  *
- *  InspIRCd: (C) 2002-2009 InspIRCd Development Team
+ *  InspIRCd: (C) 2002-2010 InspIRCd Development Team
  * See: http://wiki.inspircd.org/Credits
  *
  * This program is free but copyrighted software; see
@@ -242,6 +242,8 @@ void UserManager::QuitUser(User *user, const std::string &quitreason, const char
                this->clientlist->erase(iter);
        else
                ServerInstance->Logs->Log("USERS", DEBUG, "iter == clientlist->end, can't remove them from hash... problematic..");
+
+       ServerInstance->Users->uuidlist->erase(user->uuid);
 }
 
 
@@ -392,10 +394,12 @@ void UserManager::ServerPrivmsgAll(const char* text, ...)
 /* return how many users have a given mode e.g. 'a' */
 int UserManager::ModeCount(const char mode)
 {
-       ModeHandler* mh = ServerInstance->Modes->FindMode(mode, MODETYPE_USER);
-
-       if (mh)
-               return mh->GetCount();
-       else
-               return 0;
+       int c = 0;
+       for(user_hash::iterator i = clientlist->begin(); i != clientlist->end(); ++i)
+       {
+               User* u = i->second;
+               if (u->modes[mode-65])
+                       c++;
+       }
+       return c;
 }