-Tue Nov 13 18:24:56 EET 2007 Pekka Riikonen <priikone@silcnet.org>
+Thu Nov 15 18:03:53 EET 2007 Pekka Riikonen <priikone@silcnet.org>
+
+ * Reprocess JOIN command synchronously after resolving channel
+ user list. Affected file is lib/silcclient/command_reply.c.
+
+ * In JOIN command reply check if the channel key is already
+ saved. If it is we have received new key from server while
+ resolving user and must not save the old key. Affected file
+ is lib/silcclient/command_reply.c.
+
+Tue Nov 13 18:24:56 EET 2007 Pekka Riikonen <priikone@silcnet.org>
* Added missing channel unreferencing in CMODE, CUMODE,
TOPIC, INVITE, BAN and KICK command replies. Affected
channel->internal.resolve_cmd_ident = 0;
silc_client_unref_channel(client, conn, channel);
- SILC_FSM_CALL_CONTINUE(&cmd->thread);
+ SILC_FSM_CALL_CONTINUE_SYNC(&cmd->thread);
}
/* Get channel key and save it */
tmp = silc_argument_get_arg_type(args, 7, &len);
if (tmp) {
- silc_buffer_set(&keyp, tmp, len);
- silc_client_save_channel_key(client, conn, &keyp, channel);
+ /* If channel key already exists on the channel then while resolving
+ the user list we have already received new key from server. Don't
+ replace it with this old key. */
+ if (!channel->internal.send_key) {
+ silc_buffer_set(&keyp, tmp, len);
+ silc_client_save_channel_key(client, conn, &keyp, channel);
+ }
}
/* Get topic */