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 <priikone@poseidon.pspt.fi>
* Fixed the silc_parse_command_line to remove extra spaces
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
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
================================
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));
+ }
}
}
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;