pidgin/pidgin

Use the leaky bucket algorithm to rate limit irc messages.
release-2.x.y
2022-04-23, Gary Kramlich
c49dcf00bee6
Use the leaky bucket algorithm to rate limit irc messages.

The default values were suggested by an operator of libera.

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.

Testing Done:
Lots

Bugs closed: PIDGIN-11089

Reviewed at https://reviews.imfreedom.org/r/524/
/** @page log-signals Log Signals
@signals
@signal log-timestamp
@endsignals
@see log.h
<hr>
@signaldef log-timestamp
@signalproto
char *(*log_timestamp)(PurpleLog *log, time_t when, gboolean show_date);
@endsignalproto
@signaldesc
Emitted to allow plugins to customize the timestamp on a message
being logged.
@param log The log the message belongs to.
@param when The time to be converted to a string.
@param show_date Whether the date should be displayed.
@return A textual representation of the time, or @c NULL to use a
default format.
@note Plugins must be careful of logs with a type of PURPLE_LOG_SYSTEM.
@endsignaldef
*/
// vim: syntax=c.doxygen tw=75 et