* ---------------------------------------------------
*/
-using namespace std;
-
#include "inspircd_config.h"
#include "inspircd.h"
-#include "inspircd_io.h"
-#include <time.h>
+#include "configreader.h"
#include <string>
-#ifdef GCC3
-#include <ext/hash_map>
-#else
-#include <hash_map>
-#endif
-#include <map>
-#include <sstream>
#include <vector>
-#include <deque>
#include "users.h"
#include "ctables.h"
#include "globals.h"
#include "helperfuncs.h"
#include "hashcomp.h"
#include "socketengine.h"
-#include "typedefs.h"
-#include "command_parse.h"
-#include "cmd_quit.h"
+#include "commands/cmd_quit.h"
extern ServerConfig* Config;
extern InspIRCd* ServerInstance;
extern int MODCOUNT;
-extern std::vector<Module*> modules;
-extern std::vector<ircd_module*> factory;
+extern ModuleList modules;
+extern FactoryList factory;
extern time_t TIME;
extern user_hash clientlist;
extern chan_hash chanlist;
-extern std::vector<userrec*> all_opers;
extern std::vector<userrec*> local_users;
extern userrec* fd_ref_table[MAX_DESCRIPTORS];
-void cmd_quit::Handle (char **parameters, int pcnt, userrec *user)
+void cmd_quit::Handle (const char** parameters, int pcnt, userrec *user)
{
user_hash::iterator iter = clientlist.find(user->nick);
- char* reason;
+ char reason[MAXBUF];
- if (user->registered == 7)
+ if (user->registered == REG_ALL)
{
/* theres more to do here, but for now just close the socket */
if (pcnt == 1)
if (*parameters[0] == ':')
parameters[0]++;
- reason = parameters[0];
-
- if (strlen(reason) > MAXQUIT)
- reason[MAXQUIT-1] = 0;
+ strlcpy(reason, parameters[0],MAXQUIT-1);
/* 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)
{
ServerInstance->SE->DelFd(user->fd);
- if (find(local_users.begin(),local_users.end(),user) != local_users.end())
- {
- log(DEBUG,"Delete local user");
- local_users.erase(find(local_users.begin(),local_users.end(),user));
- }
+ if (find(local_users.begin(),local_users.end(),user) != local_users.end())
+ {
+ log(DEBUG,"Delete local user");
+ local_users.erase(find(local_users.begin(),local_users.end(),user));
+ }
user->CloseSocket();
}
clientlist.erase(iter);
}
- if (user->registered == 7) {
+ if (user->registered == REG_ALL) {
purge_empty_chans(user);
}
- if (user->fd > -1)
- fd_ref_table[user->fd] = NULL;
- delete user;
+ if (user->fd > -1)
+ fd_ref_table[user->fd] = NULL;
+ DELETE(user);
}
-
-