updates.
[silc.git] / lib / silcclient / idlist.c
index ffbcf29bda3b2b989750853ca57a2b0afc7d0559..dae275ef89efda7d5679a85a968e18121aaace9b 100644 (file)
@@ -543,6 +543,7 @@ silc_client_add_client(SilcClient client, SilcClientConnection conn,
   /* Save the client infos */
   client_entry = silc_calloc(1, sizeof(*client_entry));
   client_entry->id = id;
+  client_entry->valid = TRUE;
   silc_parse_userfqdn(nickname, &nick, &client_entry->server);
   silc_parse_userfqdn(username, &client_entry->username, 
                      &client_entry->hostname);
@@ -642,6 +643,12 @@ bool silc_client_del_channel(SilcClient client, SilcClientConnection conn,
     silc_cipher_free(channel->channel_key);
   if (channel->hmac)
     silc_hmac_free(channel->hmac);
+  if (channel->old_channel_key)
+    silc_cipher_free(channel->old_channel_key);
+  if (channel->old_hmac)
+    silc_hmac_free(channel->old_hmac);
+  if (channel->rekey_task)
+    silc_schedule_task_del(conn->client->schedule, channel->rekey_task);
   silc_client_del_channel_private_keys(client, conn, channel);
   silc_free(channel);
   return ret;
@@ -839,7 +846,7 @@ void silc_client_nickname_format(SilcClient client,
   char *newnick = NULL;
   int i, off = 0, len;
   SilcClientEntry *clients;
-  uint32 clients_count;
+  uint32 clients_count = 0;
 
   if (!client->params->nickname_format[0])
     return;
@@ -856,6 +863,13 @@ void silc_client_nickname_format(SilcClient client,
   if (!clients && !client->params->nickname_force_format)
     return;
 
+  len = 0;
+  for (i = 0; i < clients_count; i++)
+    if (clients[i]->valid)
+      len++;
+  if (!len)
+    return;
+
   cp = client->params->nickname_format;
   while (*cp) {
     if (*cp == '%') {
@@ -919,7 +933,7 @@ void silc_client_nickname_format(SilcClient client,
          break;
 
        for (i = 0; i < clients_count; i++) {
-         if (strncmp(clients[i]->nickname, newnick, off))
+         if (strncasecmp(clients[i]->nickname, newnick, off))
            continue;
          if (strlen(clients[i]->nickname) <= off)
            continue;