]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/cmd_quit.cpp
Remove a TODO comment. Also added support for <database:port> option since r6213...
[user/henk/code/inspircd.git] / src / cmd_quit.cpp
index 0065987cf2aa63e098dd985f29b780e56ba17b21..32bfff0faf9c10ef96884d720f894fd9045a3fd3 100644 (file)
@@ -26,7 +26,7 @@ extern "C" command_t* init_command(InspIRCd* Instance)
 
 CmdResult cmd_quit::Handle (const char** parameters, int pcnt, userrec *user)
 {
-       user_hash::iterator iter = ServerInstance->clientlist.find(user->nick);
+       user_hash::iterator iter = ServerInstance->clientlist->find(user->nick);
        char reason[MAXBUF];
        std::string quitmsg = "Client exited";
 
@@ -82,17 +82,18 @@ CmdResult cmd_quit::Handle (const char** parameters, int pcnt, userrec *user)
        if (IS_LOCAL(user))
        {
                ServerInstance->SE->DelFd(user);
-               if (find(ServerInstance->local_users.begin(),ServerInstance->local_users.end(),user) != ServerInstance->local_users.end())
+               std::vector<userrec*>::iterator x = find(ServerInstance->local_users.begin(),ServerInstance->local_users.end(),user);
+               if (x != ServerInstance->local_users.end())
                {
                        ServerInstance->Log(DEBUG,"Delete local user");
-                       ServerInstance->local_users.erase(find(ServerInstance->local_users.begin(),ServerInstance->local_users.end(),user));
+                       ServerInstance->local_users.erase(x);
                }
                user->CloseSocket();
        }
        
-       if (iter != ServerInstance->clientlist.end())
+       if (iter != ServerInstance->clientlist->end())
        {
-               ServerInstance->clientlist.erase(iter);
+               ServerInstance->clientlist->erase(iter);
        }
 
        if (user->registered == REG_ALL) {
@@ -105,6 +106,10 @@ CmdResult cmd_quit::Handle (const char** parameters, int pcnt, userrec *user)
                FOREACH_MOD(I_OnPostCommand,OnPostCommand("QUIT", parameters, pcnt, user, CMD_SUCCESS, original_command));
        }
 
+       if (user->registered != REG_ALL)
+               if (ServerInstance->unregistered_count)
+                       ServerInstance->unregistered_count--;
+
        DELETE(user);
        return CMD_USER_DELETED;
 }