Fixed silc_nickname_parse to return valid nickname when it returns
[silc.git] / lib / silcclient / client_entry.c
index 2a26931ae9cac71fafa5ec849a418cde2322a3f9..32f272ec189b8fdff80cd6593cd9e72c3675b58c 100644 (file)
@@ -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 (!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));
 
@@ -124,7 +119,7 @@ SilcDList silc_client_get_clients_local_ext(SilcClient client,
   }
   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;
@@ -1298,7 +1293,7 @@ SilcBool silc_client_nickname_parse(SilcClient client,
   int len;
 
   if (!client->internal->params->nickname_format[0]) {
-    *ret_nick = NULL;
+    *ret_nick = silc_strdup(nickname);
     return TRUE;
   }
 
@@ -1720,6 +1715,7 @@ SilcBool silc_client_del_channel(SilcClient client, SilcClientConnection conn,
     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);
@@ -1746,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);
-  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);