grim/pidgin

Use the leaky bucket algorithm to rate limit irc messages.
draft 2.x.y-irc-rate-limiting
2021-02-24, Gary Kramlich
5bbd0f3a7d4f
Use the leaky bucket algorithm to rate limit irc messages.

The default values were suggested by an operator of freenode.

We don't rate limit the login process, nor parts and quits. However, if you
paste a bunch of text and then part a channel, you will be spammed with a
bunch of "no such nick/channel" error dialogs. I tried to work around this,
but the alternative just makes irc unresponsive until all the pasted messages
are sent. That said, other messages are still delayed while these errors
dialogs are slowly popping up.
/** @page cmd-signals Command Signals
@signals
@signal cmd-added
@signal cmd-removed
@endsignals
@see cmds.h
@signaldef cmd-added
@signalproto
void (*cmd_added)(const char *command, PurpleCmdPriority priority,
PurpleCmdFlag flag);
@endsignalproto
@signaldesc
Emitted when a new command is added.
@param command The new command.
@param priority The priority of the new command.
@param flag The command flags.
@endsignaldef
@signaldef cmd-removed
@signalproto
void (*cmd_removed)(const char *command);
@endsignalproto
@signaldesc
Emitted when a command is removed.
@param command The removed command.
@endsignaldef
*/