From 6b9a1d7376fbd08256dd82a75a55d92731c07ac7 Mon Sep 17 00:00:00 2001 From: Sebastien Helleu Date: Fri, 6 Jan 2012 14:05:21 +0100 Subject: [PATCH] irc: use low priority for MODE sent automatically by WeeChat (when joining channel) --- ChangeLog | 2 ++ src/plugins/irc/irc-command.c | 23 ++++++++++++++++------- src/plugins/irc/irc-command.h | 3 ++- src/plugins/irc/irc-protocol.c | 3 ++- 4 files changed, 22 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index 861537c61..d5bbb6b4c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -44,6 +44,8 @@ Version 0.3.7 (under dev!) hashtable_map_string, hdata_check_pointer, hdata_char, hdata_hashtable and nicklist_get_next_item * alias: add default alias umode => /mode $nick +* irc: use low priority for MODE sent automatically by WeeChat (when joining + channel) * irc: use extended regex in commands /ignore and /list * irc: use redirection to get channel modes after update of modes on channel, display output of /mode #channel, allow /mode without argument (display modes diff --git a/src/plugins/irc/irc-command.c b/src/plugins/irc/irc-command.c index 03dc79c51..8a8a7ba6d 100644 --- a/src/plugins/irc/irc-command.c +++ b/src/plugins/irc/irc-command.c @@ -2377,19 +2377,20 @@ irc_command_me (void *data, struct t_gui_buffer *buffer, int argc, char **argv, void irc_command_mode_server (struct t_irc_server *server, - struct t_irc_channel *channel, const char *arguments) + struct t_irc_channel *channel, const char *arguments, + int flags) { if (server && (channel || arguments)) { if (channel && arguments) { - irc_server_sendf (server, IRC_SERVER_SEND_OUTQ_PRIO_HIGH, NULL, + irc_server_sendf (server, flags, NULL, "MODE %s %s", channel->name, arguments); } else { - irc_server_sendf (server, IRC_SERVER_SEND_OUTQ_PRIO_HIGH, NULL, + irc_server_sendf (server, flags, NULL, "MODE %s", (channel) ? channel->name : arguments); } @@ -2424,20 +2425,28 @@ irc_command_mode (void *data, struct t_gui_buffer *buffer, int argc, "mode"); return WEECHAT_RC_OK; } - irc_command_mode_server (ptr_server, ptr_channel, argv_eol[1]); + irc_command_mode_server (ptr_server, ptr_channel, argv_eol[1], + IRC_SERVER_SEND_OUTQ_PRIO_HIGH); } else { /* user gives channel, use arguments as-is */ - irc_command_mode_server (ptr_server, NULL, argv_eol[1]); + irc_command_mode_server (ptr_server, NULL, argv_eol[1], + IRC_SERVER_SEND_OUTQ_PRIO_HIGH); } } else { if (ptr_channel) - irc_command_mode_server (ptr_server, ptr_channel, NULL); + { + irc_command_mode_server (ptr_server, ptr_channel, NULL, + IRC_SERVER_SEND_OUTQ_PRIO_HIGH); + } else - irc_command_mode_server (ptr_server, NULL, ptr_server->nick); + { + irc_command_mode_server (ptr_server, NULL, ptr_server->nick, + IRC_SERVER_SEND_OUTQ_PRIO_HIGH); + } } return WEECHAT_RC_OK; diff --git a/src/plugins/irc/irc-command.h b/src/plugins/irc/irc-command.h index 8c762ddd8..4ae58ec66 100644 --- a/src/plugins/irc/irc-command.h +++ b/src/plugins/irc/irc-command.h @@ -58,7 +58,8 @@ extern void irc_command_join_server (struct t_irc_server *server, int manual_join); extern void irc_command_mode_server (struct t_irc_server *server, struct t_irc_channel *channel, - const char *arguments); + const char *arguments, + int flags); extern void irc_command_part_channel (struct t_irc_server *server, const char *channel_name, const char *part_message); diff --git a/src/plugins/irc/irc-protocol.c b/src/plugins/irc/irc-protocol.c index bb5e8582f..a9fdc3927 100644 --- a/src/plugins/irc/irc-protocol.c +++ b/src/plugins/irc/irc-protocol.c @@ -3781,7 +3781,8 @@ IRC_PROTOCOL_CALLBACK(366) NG_("normal", "normals", num_normal), IRC_COLOR_CHAT_DELIMITERS); - irc_command_mode_server (server, ptr_channel, NULL); + irc_command_mode_server (server, ptr_channel, NULL, + IRC_SERVER_SEND_OUTQ_PRIO_LOW); irc_channel_check_away (server, ptr_channel); } else