From: Pekka Riikonen Date: Fri, 22 Jun 2001 12:34:34 +0000 (+0000) Subject: updates. X-Git-Tag: robodoc-323~159 X-Git-Url: http://git.silcnet.org/gitweb/?a=commitdiff_plain;h=7b04d831f14d156f685b893e11997f658ae6803f;p=silc.git updates. --- diff --git a/CHANGES b/CHANGES index 100ce2be..23e98f75 100644 --- a/CHANGES +++ b/CHANGES @@ -16,6 +16,11 @@ Fri Jun 22 10:44:14 EEST 2001 Pekka Riikonen They really did not replace the cache entry in the ID Cache. Now they do that. Affected file silcd/idlist.c. + * Fixed the KICK notify handling in the Irssi SILC client to + update the channel records so that the kicked client does not + appear to be on the channel. The affected file is + irssi/src/silc/core/silc-channels.c. + Thu Jun 21 17:10:08 CEST 2001 Pekka Riikonen * Fixed the silc_parse_command_line to remove extra spaces diff --git a/TODO b/TODO index 164fe7a0..1e644afd 100644 --- a/TODO +++ b/TODO @@ -1,17 +1,6 @@ TODO/bugs in Irssi SILC client ============================== - o LEAVE does not work correctly, it doesn't leave the channel for real! - - o Remove the entire current_channel field from the client - library and handle the current channel thingy in the - Irssi SILC client. Requires short stub functions of all - commands that use current current_channel to the Irssi SILC - client which then calls the actual library command. - - o KILL notify does not remove the killed client from all channels. The - /NAMES will show it still. - o Add PERL scripting support from Irssi CVS. o Add local commands to list the current server and client public keys @@ -29,9 +18,6 @@ TODO/bugs in Irssi SILC client o Set different kind of settings, like, /set mutual_authentication, /set key_exchange_timeout, /set conn_auth_timeout etc etc. - o Do some /set show_mail_notification that would show a notification - on screen when new email is received. - TODO/bugs In SILC Client Library ================================ diff --git a/apps/irssi/src/silc/core/silc-channels.c b/apps/irssi/src/silc/core/silc-channels.c index 70db4f4f..82d6d080 100644 --- a/apps/irssi/src/silc/core/silc-channels.c +++ b/apps/irssi/src/silc/core/silc-channels.c @@ -420,20 +420,33 @@ static void event_kick(SILC_SERVER_REC *server, va_list va) SilcClientEntry client_entry; SilcChannelEntry channel_entry; char *tmp; + SILC_CHANNEL_REC *chanrec; client_entry = va_arg(va, SilcClientEntry); tmp = va_arg(va, char *); channel_entry = va_arg(va, SilcChannelEntry); + + chanrec = silc_channel_find_entry(server, channel_entry); if (client_entry == conn->local_entry) { printformat_module("fe-common/silc", server, channel_entry->channel_name, MSGLEVEL_CRAP, SILCTXT_CHANNEL_KICKED_YOU, channel_entry->channel_name, tmp ? tmp : ""); + if (chanrec) { + chanrec->kicked = TRUE; + channel_destroy((CHANNEL_REC *)chanrec); + } } else { printformat_module("fe-common/silc", server, channel_entry->channel_name, MSGLEVEL_CRAP, SILCTXT_CHANNEL_KICKED, client_entry->nickname, channel_entry->channel_name, tmp ? tmp : ""); + + if (chanrec) { + SILC_NICK_REC *nickrec = silc_nicklist_find(chanrec, client_entry); + if (nickrec != NULL) + nicklist_remove(CHANNEL(chanrec), NICK(nickrec)); + } } } @@ -472,7 +485,7 @@ static void command_part(const char *data, SILC_SERVER_REC *server, if (!IS_SILC_SERVER(server) || !server->connected) cmd_return_error(CMDERR_NOT_CONNECTED); - if (*data == '\0') { + if (!strcmp(data, "*") || *data == '\0') { if (!IS_SILC_CHANNEL(item)) cmd_return_error(CMDERR_NOT_JOINED); data = item->name;