1
0
mirror of https://github.com/weechat/weechat.git synced 2026-07-04 16:53:14 +02:00

Fix bug with IRC nicks on reconnection: try all nicks in list, even if nick used was not the first in list of nicks

This commit is contained in:
Sebastien Helleu
2010-03-30 10:40:01 +02:00
parent 5ff1742c86
commit 12afdb29c4
4 changed files with 57 additions and 44 deletions
+30
View File
@@ -272,6 +272,32 @@ irc_server_set_nick (struct t_irc_server *server, const char *nick)
weechat_bar_item_update ("input_prompt");
}
/*
* irc_server_get_nick_index: get index of nick in array "nicks_array"
* return -1 if nick is not set or not found in
* "nicks_array"
*/
int
irc_server_get_nick_index (struct t_irc_server *server)
{
int i;
if (!server->nick)
return -1;
for (i = 0; i < server->nicks_count; i++)
{
if (strcmp (server->nick, server->nicks_array[i]) == 0)
{
return i;
}
}
/* nick not found */
return -1;
}
/*
* irc_server_alloc: allocate a new server and add it to the servers queue
*/
@@ -327,6 +353,7 @@ irc_server_alloc (const char *name)
new_server->unterminated_message = NULL;
new_server->nicks_count = 0;
new_server->nicks_array = NULL;
new_server->nick_first_tried = 0;
new_server->nick = NULL;
new_server->nick_modes = NULL;
new_server->prefix = NULL;
@@ -2022,7 +2049,10 @@ irc_server_login (struct t_irc_server *server)
irc_server_set_nick (server,
(server->nicks_array) ?
server->nicks_array[0] : "weechat");
server->nick_first_tried = 0;
}
else
server->nick_first_tried = irc_server_get_nick_index (server);
if (irc_server_sasl_enabled (server))
{