mirror of
https://github.com/irssi/irssi.git
synced 2024-12-04 14:46:39 -05:00
Irssi lost channel key for secret/private channels after join.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@1835 dbcabf3a-b0e7-0310-adc4-f8d773084564
This commit is contained in:
parent
880de0fe12
commit
44270041c2
@ -408,8 +408,14 @@ static void event_channel_mode(IRC_SERVER_REC *server, const char *data,
|
||||
|
||||
params = event_get_params(data, 3 | PARAM_FLAG_GETREST, NULL, &channel, &mode);
|
||||
chanrec = irc_channel_find(server, channel);
|
||||
if (chanrec != NULL)
|
||||
if (chanrec != NULL) {
|
||||
if (chanrec->key != NULL && strchr(mode, 'k') == NULL) {
|
||||
/* we joined the channel with a key,
|
||||
but it didn't have +k mode.. */
|
||||
parse_channel_modes(chanrec, NULL, "-k");
|
||||
}
|
||||
parse_channel_modes(chanrec, nick, mode);
|
||||
}
|
||||
channel_got_query(server, chanrec, channel);
|
||||
|
||||
g_free(params);
|
||||
|
@ -93,11 +93,17 @@ static void event_names_list(IRC_SERVER_REC *server, const char *data)
|
||||
|
||||
This is actually pretty useless to check here, but at least we
|
||||
get to know if the channel is +p or +s a few seconds before
|
||||
we receive the MODE reply... */
|
||||
if (*type == '*')
|
||||
parse_channel_modes(IRC_CHANNEL(chanrec), NULL, "+p");
|
||||
else if (*type == '@')
|
||||
parse_channel_modes(IRC_CHANNEL(chanrec), NULL, "+s");
|
||||
we receive the MODE reply...
|
||||
|
||||
If the channel key is set, assume the channel is +k also until
|
||||
we know better, so parse_channel_modes() won't clear the key */
|
||||
if (*type == '*') {
|
||||
parse_channel_modes(chanrec, NULL,
|
||||
chanrec->key ? "+kp" : "+p");
|
||||
} else if (*type == '@') {
|
||||
parse_channel_modes(chanrec, NULL,
|
||||
chanrec->key ? "+ks" : "+s");
|
||||
}
|
||||
|
||||
while (*names != '\0') {
|
||||
while (*names == ' ') names++;
|
||||
|
Loading…
Reference in New Issue
Block a user