projects
/
silc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fixed silc_nickname_parse to return valid nickname when it returns
[silc.git]
/
lib
/
silcclient
/
client_entry.c
diff --git
a/lib/silcclient/client_entry.c
b/lib/silcclient/client_entry.c
index 0c812de00adbd6bec3672098d5b4565e334c52f3..32f272ec189b8fdff80cd6593cd9e72c3675b58c 100644
(file)
--- a/
lib/silcclient/client_entry.c
+++ b/
lib/silcclient/client_entry.c
@@
-85,13
+85,8
@@
SilcDList silc_client_get_clients_local_ext(SilcClient client,
if (!silc_client_nickname_parse(client, conn, (char *)nick, &parsed))
return NULL;
if (!silc_client_nickname_parse(client, conn, (char *)nick, &parsed))
return NULL;
- if (!get_all
&& parsed
)
+ if (!get_all)
format = (char *)nick;
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_LOG_DEBUG(("Find clients by nickname %s", parsed));
@@
-124,7
+119,7
@@
SilcDList silc_client_get_clients_local_ext(SilcClient client,
}
silc_list_start(list);
}
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;
/* Take all without any further checking */
while ((id_cache = silc_list_get(list))) {
entry = id_cache->context;
@@
-517,7
+512,6
@@
SilcUInt16 silc_client_get_clients_by_list(SilcClient client,
SilcUInt32 *res_argv_lens = NULL, *res_argv_types = NULL, res_argc = 0;
SilcUInt16 idp_len, cmd_ident;
SilcID id;
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"));
int i;
SILC_LOG_DEBUG(("Resolve clients from Client ID list"));
@@
-585,7
+579,7
@@
SilcUInt16 silc_client_get_clients_by_list(SilcClient client,
/* We have the clients in cache, get them and call the completion */
silc_client_get_clients_list_cb(client, conn, SILC_COMMAND_WHOIS,
/* 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 0;
err:
@@
-791,7
+785,7
@@
SilcClientEntry silc_client_add_client(SilcClient client,
return NULL;
silc_rwlock_alloc(&client_entry->internal.lock);
return NULL;
silc_rwlock_alloc(&client_entry->internal.lock);
- silc_atomic_init
8
(&client_entry->internal.refcnt, 0);
+ silc_atomic_init
16
(&client_entry->internal.refcnt, 0);
client_entry->id = *id;
client_entry->mode = mode;
client_entry->realname = userinfo ? strdup(userinfo) : NULL;
client_entry->id = *id;
client_entry->mode = mode;
client_entry->realname = userinfo ? strdup(userinfo) : NULL;
@@
-810,8
+804,8
@@
SilcClientEntry silc_client_add_client(SilcClient client,
client_entry->hostname,
sizeof(client_entry->hostname));
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);
if (!client_entry->channels) {
silc_free(client_entry->realname);
silc_free(client_entry);
@@
-995,7
+989,7
@@
void silc_client_del_client_entry(SilcClient client,
silc_client_ftp_session_free_client(client, client_entry);
if (client_entry->internal.ke)
silc_client_abort_key_agreement(client, conn, 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_uninit
8
(&client_entry->internal.refcnt);
+ silc_atomic_uninit
16
(&client_entry->internal.refcnt);
silc_rwlock_free(client_entry->internal.lock);
silc_free(client_entry);
}
silc_rwlock_free(client_entry->internal.lock);
silc_free(client_entry);
}
@@
-1010,7
+1004,7
@@
SilcBool silc_client_del_client(SilcClient client, SilcClientConnection conn,
if (!client_entry)
return FALSE;
if (!client_entry)
return FALSE;
- if (silc_atomic_sub_int
8
(&client_entry->internal.refcnt, 1) > 0)
+ if (silc_atomic_sub_int
16
(&client_entry->internal.refcnt, 1) > 0)
return FALSE;
SILC_LOG_DEBUG(("Deleting client %p", client_entry));
return FALSE;
SILC_LOG_DEBUG(("Deleting client %p", client_entry));
@@
-1072,10
+1066,10
@@
SilcClientEntry silc_client_ref_client(SilcClient client,
SilcClientConnection conn,
SilcClientEntry client_entry)
{
SilcClientConnection conn,
SilcClientEntry client_entry)
{
- silc_atomic_add_int
8
(&client_entry->internal.refcnt, 1);
+ silc_atomic_add_int
16
(&client_entry->internal.refcnt, 1);
SILC_LOG_DEBUG(("Client %p refcnt %d->%d", client_entry,
SILC_LOG_DEBUG(("Client %p refcnt %d->%d", client_entry,
- silc_atomic_get_int
8
(&client_entry->internal.refcnt) - 1,
- silc_atomic_get_int
8
(&client_entry->internal.refcnt)));
+ silc_atomic_get_int
16
(&client_entry->internal.refcnt) - 1,
+ silc_atomic_get_int
16
(&client_entry->internal.refcnt)));
return client_entry;
}
return client_entry;
}
@@
-1086,8
+1080,8
@@
void silc_client_unref_client(SilcClient client, SilcClientConnection conn,
{
if (client_entry) {
SILC_LOG_DEBUG(("Client %p refcnt %d->%d", client_entry,
{
if (client_entry) {
SILC_LOG_DEBUG(("Client %p refcnt %d->%d", client_entry,
- silc_atomic_get_int
8
(&client_entry->internal.refcnt),
- silc_atomic_get_int
8
(&client_entry->internal.refcnt) - 1));
+ silc_atomic_get_int
16
(&client_entry->internal.refcnt),
+ silc_atomic_get_int
16
(&client_entry->internal.refcnt) - 1));
silc_client_del_client(client, conn, client_entry);
}
}
silc_client_del_client(client, conn, client_entry);
}
}
@@
-1299,7
+1293,7
@@
SilcBool silc_client_nickname_parse(SilcClient client,
int len;
if (!client->internal->params->nickname_format[0]) {
int len;
if (!client->internal->params->nickname_format[0]) {
- *ret_nick =
NULL
;
+ *ret_nick =
silc_strdup(nickname)
;
return TRUE;
}
return TRUE;
}
@@
-1643,7
+1637,7
@@
SilcChannelEntry silc_client_add_channel(SilcClient client,
return NULL;
}
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);
NULL, NULL, NULL, TRUE);
if (!channel->user_list) {
silc_rwlock_free(channel->internal.lock);
@@
-1721,6
+1715,7
@@
SilcBool silc_client_del_channel(SilcClient client, SilcClientConnection conn,
return FALSE;
silc_client_empty_channel(client, conn, channel);
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);
silc_hash_table_free(channel->user_list);
silc_free(channel->channel_name);
silc_free(channel->topic);
@@
-1747,7
+1742,6
@@
SilcBool silc_client_del_channel(SilcClient client, SilcClientConnection conn,
if (channel->channel_pubkeys)
silc_argument_list_free(channel->channel_pubkeys,
SILC_ARGUMENT_PUBLIC_KEY);
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);
silc_atomic_uninit16(&channel->internal.refcnt);
silc_rwlock_free(channel->internal.lock);
silc_schedule_task_del_by_context(conn->client->schedule, channel);