Skip to content

Instantly share code, notes, and snippets.

@sitedyno
Last active August 31, 2017 03:24
Show Gist options
  • Save sitedyno/76d35f7bfa56e6fca2374dbd0f4c1bc1 to your computer and use it in GitHub Desktop.
Save sitedyno/76d35f7bfa56e6fca2374dbd0f4c1bc1 to your computer and use it in GitHub Desktop.
Research & thoughts on IRC 'floods'

Research

I was unable to find any detailed information at Freenode's or Rizon's websites about their flood controls. If you know of another network's policies please comment.

IRCD-Hybrid

A lightweight, high-performance internet relay chat daemon.

/* MAX_FLOOD is the amount of lines in a 'burst' we allow from a client,
 * anything beyond MAX_FLOOD is limited to about one line per second.
 *
 * MAX_FLOOD_CONN is the amount of lines we allow from a client who has
 * just connected.  this allows clients to rejoin multiple channels
 * without being so heavily penalised they excess flood.
 */
enum
{
  MAX_FLOOD = 5,
  MAX_FLOOD_BURST = MAX_FLOOD * 8
};

Source

Eggdrop bot

It is a feature rich program designed to be easily used and expanded upon (using Tcl scripting) by both novice and advanced IRC users on a variety of hardware and software platforms.

set msg-rate 2
Number of seconds to wait between transmitting queued lines to the server.
Lower this value at your own risk. ircd is known to start flood control at 512 bytes/2 seconds.
set flood-msg 5:60
Set here how many msgs in how many seconds from one host constitutes a flood.
If you set this to 0:0, msg flood protection will be disabled.

set flood-ctcp 3:60
Set here how many ctcps in how many seconds from one host are recognized as a flood.
Not specifying or using number = 0 will not check against ctcp floods.

Source

Anope

Anope is a set of IRC Services forked from Epona early 2003 to pick up where Epona had been abandoned. Ever since there have been improvements on quality and functionality of Anope, resulting in the feature rich set of services we offer today.

I believe the following are on a per channel basis.

kd->floodlines = 6;

Source

kd->floodsecs = 10;

Source

Twitch

Twitch's limit is 500 characters excluding the new line characters. For ASCII one character is one byte, but other characters use more, some as many as 4 bytes. As such, you can have a message that's 500 characters but 2000 bytes, which will absolutely break many IRC clients in one way or another.

Also Twitch chat is based on the older RFC 1459, although it doesn't make a difference in this case.

Source

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment