if (!silc_client_nickname_parse(client, conn, (char *)nick, &parsed))
return NULL;
- if (!get_all && parsed)
+ if (!get_all)
format = (char *)nick;
- if (!parsed) {
- parsed = silc_memdup(nick, strlen(nick));
- if (!parsed)
- return NULL;
- }
SILC_LOG_DEBUG(("Find clients by nickname %s", parsed));
}
silc_list_start(list);
- if (!format && get_all) {
+ if (get_all) {
/* Take all without any further checking */
while ((id_cache = silc_list_get(list))) {
entry = id_cache->context;
SilcUInt32 *res_argv_lens = NULL, *res_argv_types = NULL, res_argc = 0;
SilcUInt16 idp_len, cmd_ident;
SilcID id;
- va_list tmp;
int i;
SILC_LOG_DEBUG(("Resolve clients from Client ID list"));
/* We have the clients in cache, get them and call the completion */
silc_client_get_clients_list_cb(client, conn, SILC_COMMAND_WHOIS,
- SILC_STATUS_OK, SILC_STATUS_OK, in, tmp);
+ SILC_STATUS_OK, SILC_STATUS_OK, in, NULL);
return 0;
err:
client_entry->hostname,
sizeof(client_entry->hostname));
- client_entry->channels = silc_hash_table_alloc(1, silc_hash_ptr, NULL, NULL,
- NULL, NULL, NULL, TRUE);
+ client_entry->channels = silc_hash_table_alloc(NULL, 1, silc_hash_ptr, NULL,
+ NULL, NULL, NULL, NULL, TRUE);
if (!client_entry->channels) {
silc_free(client_entry->realname);
silc_free(client_entry);
int len;
if (!client->internal->params->nickname_format[0]) {
- *ret_nick = NULL;
+ *ret_nick = silc_strdup(nickname);
return TRUE;
}
return NULL;
}
- channel->user_list = silc_hash_table_alloc(1, silc_hash_ptr, NULL, NULL,
+ channel->user_list = silc_hash_table_alloc(NULL, 1, silc_hash_ptr, NULL, NULL,
NULL, NULL, NULL, TRUE);
if (!channel->user_list) {
silc_rwlock_free(channel->internal.lock);
SilcBool silc_client_del_channel(SilcClient client, SilcClientConnection conn,
SilcChannelEntry channel)
{
+
if (!channel)
return FALSE;
SILC_LOG_DEBUG(("Marking channel entry %p deleted"));
+
if (silc_atomic_sub_int32(&channel->internal.deleted, 1) != 0) {
SILC_LOG_DEBUG(("Channel entry %p already marked deleted"));
return FALSE;
+ silc_client_del_channel_private_keys(client, conn, channel);
}
silc_client_unref_channel(client, conn, channel);