X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Finspircd.cpp;h=2558f3efc57a6c40d828adcb7a087318b0c5969e;hb=483ec8439c6564f8e3783223a01c641326b6f2d8;hp=369c1f4c41d146e3d59226ed41a7dc905b85a1b3;hpb=90466a6f9fc66e7275aa134569364fa75e2b074b;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/inspircd.cpp b/src/inspircd.cpp index 369c1f4c4..2558f3efc 100644 --- a/src/inspircd.cpp +++ b/src/inspircd.cpp @@ -4087,24 +4087,45 @@ int InspIRCd(void) if (current->registered == 7) { kill_link(current,"RecvQ exceeded"); - goto label; } else { + WriteOpers("*** Excess flood from %s",current->ip); + log(DEFAULT,"Excess flood from: %s",current->ip); add_zline(120,ServerName,"Flood from unregistered connection",current->ip); apply_lines(); - goto label; } + goto label; } // while there are complete lines to process... while (current->BufferIsReady()) { floodlines++; - if ((floodlines > current->flood) && (current->flood != 0)) + if (TIME > current->reset_due) { - log(DEFAULT,"Excess flood from: %s!%s@%s",current->nick,current->ident,current->host); - WriteOpers("*** Excess flood from: %s!%s@%s",current->nick,current->ident,current->host); + current->reset_due = TIME+3; + current->lines_in = 0; + } + current->lines_in++; + if (current->lines_in > current->flood) + { + log(DEFAULT,"Excess flood from: %s!%s@%s",current->nick,current->ident,current->host); + WriteOpers("*** Excess flood from: %s!%s@%s",current->nick,current->ident,current->host); kill_link(current,"Excess flood"); + } + if ((floodlines > current->flood) && (current->flood != 0)) + { + if (current->registered == 7) + { + log(DEFAULT,"Excess flood from: %s!%s@%s",current->nick,current->ident,current->host); + WriteOpers("*** Excess flood from: %s!%s@%s",current->nick,current->ident,current->host); + kill_link(current,"Excess flood"); + } + else + { + add_zline(120,ServerName,"Flood from unregistered connection",current->ip); + apply_lines(); + } goto label; } char sanitized[MAXBUF];