X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fcommand_parse.cpp;h=5492e26b5d54717ca44799b40f4cb2d389ab47cd;hb=21f9acdb6c5c35b26d926f75845135f16c3c54e9;hp=6db10658bd5064350dd4a5b01c358f22dd17fffa;hpb=d3c7457dda8555e410f4fbc36bb1b1b4cb0ae3f2;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/command_parse.cpp b/src/command_parse.cpp index 6db10658b..5492e26b5 100644 --- a/src/command_parse.cpp +++ b/src/command_parse.cpp @@ -219,26 +219,29 @@ CmdResult CommandParser::CallHandler(const std::string &commandname,const char** void CommandParser::DoLines(User* current, bool one_only) { // while there are complete lines to process... - int floodlines = 0; + unsigned int floodlines = 0; while (current->BufferIsReady()) { - if (ServerInstance->Time() > current->reset_due) + if (current->MyClass) { - current->reset_due = ServerInstance->Time() + current->threshold; - current->lines_in = 0; - } + if (ServerInstance->Time() > current->reset_due) + { + current->reset_due = ServerInstance->Time() + current->MyClass->GetThreshold(); + current->lines_in = 0; + } - if (++current->lines_in > current->flood && current->flood) - { - ServerInstance->FloodQuitUser(current); - return; - } + if (++current->lines_in > current->MyClass->GetFlood() && current->MyClass->GetFlood()) + { + ServerInstance->FloodQuitUser(current); + return; + } - if ((++floodlines > current->flood) && (current->flood != 0)) - { - ServerInstance->FloodQuitUser(current); - return; + if ((++floodlines > current->MyClass->GetFlood()) && (current->MyClass->GetFlood() != 0)) + { + ServerInstance->FloodQuitUser(current); + return; + } } // use GetBuffer to copy single lines into the sanitized string @@ -284,16 +287,6 @@ bool CommandParser::ProcessCommand(User *user, std::string &cmd) return true; } - if (!user) - { - /* - * before, we went and found the command even with no user.. seems nonsensical. - * I'm not entirely sure when we would be passed NULL, but let's handle it - * anyway, by dropping it like a hot potato. -- w00t - */ - return true; - } - /* find the command, check it exists */ Commandable::iterator cm = cmdlist.find(command); @@ -309,17 +302,15 @@ bool CommandParser::ProcessCommand(User *user, std::string &cmd) if (!user->ExemptFromPenalty) { user->IncreasePenalty(cm->second->Penalty); - ServerInstance->Log(DEBUG,"Penalty for %s is now incremented to %d (%d added on)", user->nick, user->Penalty, cm->second->Penalty); do_more = (user->Penalty < 10); if (!do_more) - { user->OverPenalty = true; - ServerInstance->Log(DEBUG,"User %s now OVER penalty of 10", user->nick); - } } /* activity resets the ping pending timer */ - user->nping = ServerInstance->Time() + user->pingmax; + if (user->MyClass) + user->nping = ServerInstance->Time() + user->MyClass->GetPingTime(); + if (cm->second->flags_needed) { if (!user->IsModeSet(cm->second->flags_needed))