+ // while there are complete lines to process...
+ unsigned int floodlines = 0;
+
+ while (current->BufferIsReady())
+ {
+ if (current->MyClass)
+ {
+ if (ServerInstance->Time() > current->reset_due)
+ {
+ current->reset_due = ServerInstance->Time() + current->MyClass->GetThreshold();
+ current->lines_in = 0;
+ }
+
+ if (++current->lines_in > current->MyClass->GetFlood() && current->MyClass->GetFlood())
+ {
+ 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
+ std::string single_line = current->GetBuffer();
+ current->bytes_in += single_line.length();
+ current->cmds_in++;
+ if (single_line.length() > MAXBUF - 2) // MAXBUF is 514 to allow for neccessary line terminators
+ single_line.resize(MAXBUF - 2); // So to trim to 512 here, we use MAXBUF - 2
+
+ // ProcessBuffer returns false if the user has gone over penalty
+ if (!ServerInstance->Parser->ProcessBuffer(single_line, current) || one_only)
+ break;
+ }
+}
+
+bool CommandParser::ProcessCommand(User *user, std::string &cmd)
+{
+ std::vector<std::string> command_p;