X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fuserprocess.cpp;h=ee9c75bc0b9eb9061abc8edb21e3b5caddd6a85c;hb=ac83d3b0d607f2bdc373365bc2f08f0cde023bf3;hp=d4de2907596221296d04cb9285172ebe568595aa;hpb=de25d946733f774e3a5b53a58438a9c92af0acbe;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/userprocess.cpp b/src/userprocess.cpp index d4de29075..ee9c75bc0 100644 --- a/src/userprocess.cpp +++ b/src/userprocess.cpp @@ -2,7 +2,7 @@ * | Inspire Internet Relay Chat Daemon | * +------------------------------------+ * - * InspIRCd: (C) 2002-2009 InspIRCd Development Team + * InspIRCd: (C) 2002-2010 InspIRCd Development Team * See: http://wiki.inspircd.org/Credits * * This program is free but copyrighted software; see @@ -46,25 +46,29 @@ void InspIRCd::DoBackgroundUserStuff() /* * loop over all local users.. */ - std::vector::reverse_iterator count2 = this->Users->local_users.rbegin(); + std::vector::reverse_iterator count2 = this->Users->local_users.rbegin(); while (count2 != this->Users->local_users.rend()) { - User *curr = *count2; + LocalUser *curr = *count2; count2++; if (curr->quitting) continue; - if (curr->Penalty) + if (curr->CommandFloodPenalty) { - curr->Penalty--; - curr->OnDataReady(); + unsigned int rate = curr->MyClass->GetCommandRate(); + if (curr->CommandFloodPenalty > rate) + curr->CommandFloodPenalty -= rate; + else + curr->CommandFloodPenalty = 0; + curr->eh.OnDataReady(); } switch (curr->registered) { case REG_ALL: - if (TIME > curr->nping) + if (Time() > curr->nping) { // This user didn't answer the last ping, remove them if (!curr->lastping) @@ -73,14 +77,14 @@ void InspIRCd::DoBackgroundUserStuff() char message[MAXBUF]; snprintf(message, MAXBUF, "Ping timeout: %ld second%s", (long)time, time > 1 ? "s" : ""); curr->lastping = 1; - curr->nping = TIME + curr->MyClass->GetPingTime(); + curr->nping = Time() + curr->MyClass->GetPingTime(); this->Users->QuitUser(curr, message); continue; } curr->Write("PING :%s",this->Config->ServerName.c_str()); curr->lastping = 0; - curr->nping = TIME +curr->MyClass->GetPingTime(); + curr->nping = Time() +curr->MyClass->GetPingTime(); } break; case REG_NICKUSER: @@ -93,7 +97,7 @@ void InspIRCd::DoBackgroundUserStuff() break; } - if (curr->registered != REG_ALL && (TIME > (curr->age + curr->MyClass->GetRegTimeout()))) + if (curr->registered != REG_ALL && (Time() > (curr->age + curr->MyClass->GetRegTimeout()))) { /* * registration timeout -- didnt send USER/NICK/HOST