if (cmd->error == SILC_STATUS_ERR_NO_SUCH_CHANNEL_ID) {
SilcChannelEntry channel;
- /* Remove unknown client entry from cache */
+ /* Remove unknown channel entry from cache */
if (!silc_argument_get_decoded(args, 2, SILC_ARGUMENT_ID, &id, NULL))
return;
if (cmd->error == SILC_STATUS_ERR_NO_SUCH_SERVER_ID) {
SilcServerEntry server_entry;
- /* Remove unknown client entry from cache */
+ /* Remove unknown server entry from cache */
if (!silc_argument_get_decoded(args, 2, SILC_ARGUMENT_ID, &id, NULL))
return;
/** Wait for command reply */
silc_fsm_set_state_context(fsm, NULL);
silc_fsm_next_later(fsm, silc_client_command_reply_timeout,
- cmd->cmd != SILC_COMMAND_PING ? 25 : 60, 0);
+ cmd->cmd != SILC_COMMAND_PING ? 40 : 60, 0);
return SILC_FSM_WAIT;
}
}
/* Notify application */
- silc_client_command_callback(cmd, channel_entry, name, info);
+ silc_client_command_callback(cmd, channel_entry,
+ channel_entry->channel_name, info);
silc_client_unref_channel(client, conn, channel_entry);
break;
}
if (!silc_client_change_nickname(client, conn, conn->local_entry,
nick, &id.u.client_id, idp, idp_len)) {
ERROR_CALLBACK(SILC_STATUS_ERR_BAD_NICKNAME);
+ silc_rwlock_unlock(conn->local_entry->internal.lock);
goto out;
}
}
/* Notify application */
- silc_client_command_callback(cmd, channel_entry, name, topic, usercount);
+ silc_client_command_callback(cmd, channel_entry, channel_entry->channel_name,
+ topic, usercount);
out:
silc_client_unref_channel(client, conn, channel_entry);
/* Add clients we received in the reply to the channel */
for (i = 0; i < list_count; i++) {
SilcUInt16 idp_len;
- SilcUInt32 mode;
SilcID id;
SilcClientEntry client_entry;
silc_hash_table_list(channel->user_list, &htl);
/* Notify application */
- silc_client_command_callback(cmd, channel_name, channel, mode, &htl,
+ silc_client_command_callback(cmd, channel->channel_name, channel, mode, &htl,
topic, cipher, hmac, channel->founder_key,
channel->channel_pubkeys, channel->user_limit);
SilcCommandPayload payload = state_context;
SilcArgumentPayload args = silc_command_get_args(payload);
unsigned char *tmp;
- SilcUInt32 tmp_len, list_count;
- SilcUInt16 idp_len, mode;
+ SilcUInt32 tmp_len, list_count, mode;
+ SilcUInt16 idp_len;
SilcHashTableList htl;
SilcBufferStruct client_id_list, client_mode_list;
SilcChannelEntry channel = NULL;
}
}
+ silc_rwlock_unlock(channel->internal.lock);
+
/* Notify application */
silc_hash_table_list(channel->user_list, &htl);
silc_client_command_callback(cmd, channel, &htl);
goto out;
}
if (!silc_public_key_payload_decode(tmp, len, &public_key)) {
+ SAY(client, conn, SILC_CLIENT_MESSAGE_COMMAND_ERROR,
+ "Cannot decode public key: malformed/unsupported public key");
ERROR_CALLBACK(SILC_STATUS_ERR_NOT_ENOUGH_PARAMS);
goto out;
}