X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fuserprocess.cpp;h=2792a28dc0d1f76a72ecfa03635a96e703218be7;hb=9133c3302428eb81f6d970502f811e8168079d5a;hp=bc354fa6d955ab0d11341dc6e6305cf4f1c1a1f8;hpb=6d03943426dcce76ba66567a9b18425a5ebb4c0c;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/userprocess.cpp b/src/userprocess.cpp index bc354fa6d..2792a28dc 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,30 +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->eh.getSendQSize()) { - curr->Penalty--; - curr->OnDataReady(); - } - - if (curr->getSendQSize() == 0) - { - FOREACH_MOD(I_OnBufferFlushed,OnBufferFlushed(curr)); + 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) @@ -78,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); + 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: @@ -98,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