]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/cmd_quit.cpp
More tweaks
[user/henk/code/inspircd.git] / src / cmd_quit.cpp
index 3673b842710c141bfb2703f7b005a707bc8327d8..c1e73bc842ae954dcf7ff2663261e9842a67f314 100644 (file)
 #include "modules.h"
 #include "dynamic.h"
 #include "wildcard.h"
-#include "message.h"
 #include "commands.h"
 #include "mode.h"
 #include "xline.h"
 #include "inspstring.h"
-#include "helperfuncs.h"
+
 #include "hashcomp.h"
 #include "socketengine.h"
 #include "commands/cmd_quit.h"
 
-extern InspIRCd* ServerInstance;
-extern int MODCOUNT;
-extern ModuleList modules;
-extern FactoryList factory;
-extern time_t TIME;
-
 void cmd_quit::Handle (const char** parameters, int pcnt, userrec *user)
 {
        user_hash::iterator iter = ServerInstance->clientlist.find(user->nick);
@@ -59,7 +52,7 @@ void cmd_quit::Handle (const char** parameters, int pcnt, userrec *user)
                        /* We should only prefix the quit for a local user. Remote users have
                         * already been prefixed, where neccessary, by the upstream server.
                         */
-                       if (user->fd > -1)
+                       if (IS_LOCAL(user))
                        {
                                user->Write("ERROR :Closing link (%s@%s) [%s%s]",user->ident,user->host,ServerInstance->Config->PrefixQuit,parameters[0]);
                                ServerInstance->WriteOpers("*** Client exiting: %s!%s@%s [%s%s]",user->nick,user->ident,user->host,ServerInstance->Config->PrefixQuit,parameters[0]);
@@ -87,12 +80,12 @@ void 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 (user->fd > -1)
+       if (IS_LOCAL(user))
        {
-               ServerInstance->SE->DelFd(user->fd);
+               ServerInstance->SE->DelFd(user);
                if (find(ServerInstance->local_users.begin(),ServerInstance->local_users.end(),user) != ServerInstance->local_users.end())
                {
-                       log(DEBUG,"Delete local user");
+                       ServerInstance->Log(DEBUG,"Delete local user");
                        ServerInstance->local_users.erase(find(ServerInstance->local_users.begin(),ServerInstance->local_users.end(),user));
                }
                user->CloseSocket();
@@ -106,7 +99,6 @@ void cmd_quit::Handle (const char** parameters, int pcnt, userrec *user)
        if (user->registered == REG_ALL) {
                user->PurgeEmptyChannels();
        }
-       if (user->fd > -1)
-               ServerInstance->fd_ref_table[user->fd] = NULL;
        DELETE(user);
 }
+