]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/command_parse.cpp
Annotations
[user/henk/code/inspircd.git] / src / command_parse.cpp
index be61ef869fa37a2dbaa9f7f97af481bef22e25a7..a158ff6a36be9ac17d8e2def2f2ec91465988758 100644 (file)
@@ -241,7 +241,6 @@ int CommandParser::LoopCall(userrec* user, command_t* CommandObj, const char** p
                return 0;
 
        /* Only one commasepstream here */
-       ServerInstance->Log(DEBUG,"LoopCall on '%s'",parameters[splithere]);
        irc::commasepstream items1(parameters[splithere]);
        std::string item = "";
        unsigned int max = 0;
@@ -252,7 +251,6 @@ int CommandParser::LoopCall(userrec* user, command_t* CommandObj, const char** p
         */
        while (((item = items1.GetToken()) != "") && (max++ < ServerInstance->Config->MaxTargets))
        {
-               ServerInstance->Log(DEBUG,"LoopCall get item: '%s'", item.c_str());
                parameters[splithere] = item.c_str();
                CommandObj->Handle(parameters,pcnt,user);
        }
@@ -317,12 +315,14 @@ void CommandParser::ProcessCommand(userrec *user, std::string &cmd)
 {
        const char *command_p[127];
        int items = 0;
-       std::string para[127];
        irc::tokenstream tokens(cmd);
        std::string command = tokens.GetToken();
 
        while (((para[items] = tokens.GetToken()) != "") && (items < 127))
-               command_p[items] = para[items++].c_str();
+       {
+               command_p[items] = para[items].c_str();
+               items++;
+       }
 
        std::transform(command.begin(), command.end(), command.begin(), ::toupper);
                
@@ -385,7 +385,10 @@ void CommandParser::ProcessCommand(userrec *user, std::string &cmd)
                                 */
                                CmdResult result = cm->second->Handle(command_p,items,user);
 
-                               FOREACH_MOD(I_OnPostCommand,OnPostCommand(command, command_p, items, user, result));
+                               if (result != CMD_USER_DELETED)
+                               {
+                                       FOREACH_MOD(I_OnPostCommand,OnPostCommand(command, command_p, items, user, result));
+                               }
                                return;
                        }
                        else
@@ -473,6 +476,7 @@ bool CommandParser::CreateCommand(command_t *f, void* so_handle)
 
 CommandParser::CommandParser(InspIRCd* Instance) : ServerInstance(Instance)
 {
+       para.resize(128);
        this->SetupCommandTable();
 }