]> arthur.barton.de Git - ngircd-alex.git/blobdiff - src/ngircd/conn.c
Implement user mode "F": "relaxed flood protection"
[ngircd-alex.git] / src / ngircd / conn.c
index 77c8cd8a04ae7c6dca8958663326b52a34053180..5c175dfd26e1bec492c2cb545296d6c37c58a55e 100644 (file)
@@ -1693,7 +1693,12 @@ Handle_Buffer(CONN_ID Idx)
                        maxcmd *= 5;
                break;
            case CLIENT_SERVICE:
-               maxcmd = MAX_COMMANDS_SERVICE; break;
+               maxcmd = MAX_COMMANDS_SERVICE;
+               break;
+           case CLIENT_USER:
+               if (Client_HasMode(c, 'F'))
+                       maxcmd = MAX_COMMANDS_SERVICE;
+               break;
        }
 
        for (i=0; i < maxcmd; i++) {
@@ -2427,6 +2432,10 @@ Throttle_Connection(const CONN_ID Idx, CLIENT *Client, const int Reason,
            || Client_Type(Client) == CLIENT_SERVICE)
                return;
 
+       /* Don't throttle clients with user mode 'F' set */
+       if (Client_HasMode(Client, 'F'))
+               return;
+
        LogDebug("Throttling connection %d: code %d, value %d!", Idx,
                 Reason, Value);
        Conn_SetPenalty(Idx, 1);