$EPIC: flood_control.txt,v 1.1 2007/03/02 02:32:04 jnelson Exp $
The client has an anti-flood facility whose purpose is to prevent crapflooding to your display. Since flood control is a client-side facility, it can't stop someone from consuming all your cpu or bandwidth.
The set flood_maskuser value controls what the client considers to be one flooder.
|set flood_maskuser value||Description|
|0||Treat each unique user@host as distinct flooder|
|1||Treat identd users uniquely, treat all non-identd users on a host together as one flooder|
|2||Treat all users on a host as one flooder|
Floods are specific to a target (channel or msgs), server, and level. If someone floods you on multiple channels or using multiple types of messages, these are all considered different floods. Servers are always exempt from flood control.
The client maintains a list of potential floods. The number of floods to track is controlled by set flood_users. Setting this value too high takes up lots of resources, setting it too low makes the facility less effective.
When someone new sends you a message, they are added to the flood list, taking the place of the oldest entry on the flood list that doesn't have any penalty points (see below). Therefore, entries are constantly being added and removed from the flood list, as long as they don't flood you. If an entry would have been removed, but it has penalty points, then it loses one penalty point. Eventually (if it doesn't flood you), all of the penalty points will run out and then it will be removed.
If a potential flooder sends you set flood_after messages before they are removed from the list, the messages-per-second rate is compared against set flood_rate / set flood_rate_per. If the flooder has sent too many messages, each time they send you a message they will receive a “penalty point”, until the rate of messages falls below your threshhold. These penalty points prevent the flooder from being removed from the tracking list for a long time. This allows the client to focus its efforts on people who are causing you trouble.
When you are flooded, if set flood_warning is on, a message is sent to your display telling you that you have been flooded. If set flood_ignore is ON, then the normal processing of the message is suppressed by the client. If set ignore is OFF, then the client continues to process the message normally.
The floodinfo function will tell you about the flood list.
Flood control has always been a part of ircII.