]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/cmd_quit.cpp
*slaps self* for not test compiling
[user/henk/code/inspircd.git] / src / cmd_quit.cpp
index 097c8a68f52c41b16fe6f08155e9c18d1357fe1c..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";
 
@@ -79,21 +79,21 @@ CmdResult cmd_quit::Handle (const char** parameters, int pcnt, userrec *user)
 
        FOREACH_MOD(I_OnUserDisconnect,OnUserDisconnect(user));
 
-       /* push the socket on a stack of sockets due to be closed at the next opportunity */
        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) {
@@ -106,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;
 }