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:
return NULL;
silc_rwlock_alloc(&client_entry->internal.lock);
- silc_atomic_init8(&client_entry->internal.refcnt, 0);
+ silc_atomic_init16(&client_entry->internal.refcnt, 0);
client_entry->id = *id;
client_entry->mode = mode;
client_entry->realname = userinfo ? strdup(userinfo) : NULL;
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);
silc_client_ftp_session_free_client(client, client_entry);
if (client_entry->internal.ke)
silc_client_abort_key_agreement(client, conn, client_entry);
- silc_atomic_uninit8(&client_entry->internal.refcnt);
+ silc_atomic_uninit16(&client_entry->internal.refcnt);
silc_rwlock_free(client_entry->internal.lock);
silc_free(client_entry);
}
if (!client_entry)
return FALSE;
- if (silc_atomic_sub_int8(&client_entry->internal.refcnt, 1) > 0)
+ if (silc_atomic_sub_int16(&client_entry->internal.refcnt, 1) > 0)
return FALSE;
SILC_LOG_DEBUG(("Deleting client %p", client_entry));
SilcClientConnection conn,
SilcClientEntry client_entry)
{
- silc_atomic_add_int8(&client_entry->internal.refcnt, 1);
+ silc_atomic_add_int16(&client_entry->internal.refcnt, 1);
SILC_LOG_DEBUG(("Client %p refcnt %d->%d", client_entry,
- silc_atomic_get_int8(&client_entry->internal.refcnt) - 1,
- silc_atomic_get_int8(&client_entry->internal.refcnt)));
+ silc_atomic_get_int16(&client_entry->internal.refcnt) - 1,
+ silc_atomic_get_int16(&client_entry->internal.refcnt)));
return client_entry;
}
{
if (client_entry) {
SILC_LOG_DEBUG(("Client %p refcnt %d->%d", client_entry,
- silc_atomic_get_int8(&client_entry->internal.refcnt),
- silc_atomic_get_int8(&client_entry->internal.refcnt) - 1));
+ silc_atomic_get_int16(&client_entry->internal.refcnt),
+ silc_atomic_get_int16(&client_entry->internal.refcnt) - 1));
silc_client_del_client(client, conn, 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);
return FALSE;
silc_client_empty_channel(client, conn, channel);
+ silc_client_del_channel_private_keys(client, conn, channel);
silc_hash_table_free(channel->user_list);
silc_free(channel->channel_name);
silc_free(channel->topic);
if (channel->channel_pubkeys)
silc_argument_list_free(channel->channel_pubkeys,
SILC_ARGUMENT_PUBLIC_KEY);
- silc_client_del_channel_private_keys(client, conn, channel);
silc_atomic_uninit16(&channel->internal.refcnt);
silc_rwlock_free(channel->internal.lock);
silc_schedule_task_del_by_context(conn->client->schedule, channel);