pidgin/pidgin

Make all irc login time commands skip the rate limiter.
release-2.x.y
2022-04-27, Gary Kramlich
3230f4408394
Make all irc login time commands skip the rate limiter.

Most networks don't rate limit during the login process but will time you out
if you take too long. Running through the SASL mechansism on Freenode with the
rate limiter was causing us to time out. The ideal solution is to handle the
908 reply and use those mechanisms directly, but I ran into some issues and
this is useful on its own.

Testing Done:
Connected to Freenode and verified we didn't time out during SASL login.

Reviewed at https://reviews.imfreedom.org/r/1391/
/** @page gtkconv-signals GtkConv Signals
@signals
@signal conversation-dragging
@signal conversation-timestamp
@signal displaying-im-msg
@signal displayed-im-msg
@signal displaying-chat-msg
@signal displayed-chat-msg
@signal conversation-switched
@signal conversation-hiding
@signal conversation-displayed
@endsignals
@see gtkconv.h
<hr>
@signaldef conversation-dragging
@signalproto
void (*conversation_dragging)(PidginWindow *source, PidginWindow *destination);
@endsignalproto
@signaldesc
Emitted when a conversation is being drag and dropped between windows.
@param source The window where the conversation is.
@param destination The window where the conversation will be moved to.
@endsignaldef
@signaldef conversation-timestamp
@signalproto
char *(*conversation_timestamp)(PurpleConversation *conv, time_t when,
gboolean show_date);
@endsignalproto
@signaldesc
Emitted to allow plugins to customize the timestamp on a message.
@param conv The conversation 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.
@endsignaldef
@signaldef displaying-im-msg
@signalproto
gboolean (*displaying_im_msg)(PurpleAccount *account, const char *who,
char **message, PurpleConversation *conv,
PurpleMessageFlags flags);
@endsignalproto
@signaldesc
Emitted just before a message is displayed in an IM conversation.
@a message is a pointer to a string, so the plugin can replace the
message that will be displayed. This can also be used to cancel displaying
a message by returning @c TRUE.
@note
Make sure to free @a *message before you replace it!
@param account The account.
@param who The name of the user.
@param message A pointer to the message.
@param conv The conversation.
@param flags Flags for this message.
@return @c TRUE if the message should be canceled, or @c FALSE otherwise.
@endsignaldef
@signaldef displayed-im-msg
@signalproto
void (*displayed_im_msg)(PurpleAccount *account, const char *who,
char *message, PurpleConversation *conv,
PurpleMessageFlags flags);
@endsignalproto
@signaldesc
Emitted after a message is displayed in an IM conversation.
@param account The account.
@param who The name of the user.
@param message The message.
@param conv The conversation.
@param flags Flags for this message.
@endsignaldef
@signaldef displaying-chat-msg
@signalproto
gboolean (*displaying_chat_msg)(PurpleAccount *account, const char *who,
char **message, PurpleConversation *conv,
PurpleMessageFlags flags);
@endsignalproto
@signaldesc
Emitted just before a message is displayed in a chat.
@a message is a pointer to a string, so the plugin can replace the
message that will be displayed. This can also be used to cancel displaying
a message by returning @c TRUE.
@note
Make sure to free @a *message before you replace it!
@param account The account the message is being displayed and sent on.
@param who The name of the user.
@param message A pointer to the message that will be displayed and sent.
@param conv The conversation the message is being displayed and sent on.
@param flags Flags for this message.
@return @c TRUE if the message should be canceled, or @c FALSE otherwise.
@endsignaldef
@signaldef displayed-chat-msg
@signalproto
void (*displayed_chat_msg)(PurpleAccount *account, const char *who,
char *message, PurpleConversation *conv,
PurpleMessageFlags flags);
@endsignalproto
@signaldesc
Emitted after a message is displayed in a chat conversation.
@param account The account the message is being displayed and sent on.
@param who The name of the user.
@param message A pointer to the message that will be displayed and sent.
@param conv The conversation the message is being displayed and sent on.
@param flags Flags for this message.
@endsignaldef
@signaldef conversation-switched
@signalproto
void (*conversation_switched)(PurpleConversation *conv);
@endsignalproto
@signaldesc
Emitted when a window switched from one conversation to another.
@param new_conv The now active conversation.
@endsignaldef
@signaldef conversation-hiding
@signalproto
void (*conversation_hiding)(PidginConversation *gtkconv);
@endsignalproto
@signaldesc
Emitted immediately before an existing conversation is hidden.
@param gtkconv The PidginConversation
@since 2.2.0
@endsignaldef
@signaldef conversation-displayed
@signalproto
void (*conversation_displayed)(PidginConversation *gtkconv);
@endsignalproto
@signaldesc
Emitted right after the Pidgin UI is attached to a new or a hidden conversation.
@param gtkconv The PidginConversation
@since 2.2.0
@endsignaldef
*/
// vim: syntax=c.doxygen tw=75 et