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 imgstore-signals Image Store Signals
@signals
@signal image-deleting
@endsignals
@see imgstore.h
<hr>
@signaldef image-deleting
@signalproto
char *(*image_deleting)(const PurpleStoredImage *img);
@endsignalproto
@signaldesc
Emitted when a #PurpleStoredImage is about to be destroyed. This allows
for what amounts to weak references. Code can hold onto a pointer to
the PurpleStoredImage without actually "holding" a reference. They can
then use a signal handler to let them know when their img is about to
be destroyed.
@param img The image about to be destroyed.
@note It's not possible to purple_imgstore_ref() img to save it.
@endsignaldef
*/
// vim: syntax=c.doxygen tw=75 et