Sun Mar 11 15:22:42 CET 2007 Jochen Eisinger <coffee@silcnet.org>
[silc.git] / lib / silcclient / client_entry.c
index 1cc1833709b635c20ad0e7bf1d9bbbbe4d158fbb..ae7cba717d102c8d597731245240ffab4de00585 100644 (file)
@@ -903,11 +903,9 @@ void silc_client_del_client_entry(SilcClient client,
     silc_hmac_free(client_entry->internal.hmac_send);
   if (client_entry->internal.hmac_receive)
     silc_hmac_free(client_entry->internal.hmac_receive);
-#if 0
-  silc_client_ftp_session_free_client(conn, client_entry);
-  if (client_entry->internal->ke)
+  silc_client_ftp_session_free_client(client, client_entry);
+  if (client_entry->internal.ke)
     silc_client_abort_key_agreement(client, conn, client_entry);
-#endif /* 0 */
   silc_atomic_uninit8(&client_entry->internal.refcnt);
   silc_rwlock_free(client_entry->internal.lock);
   silc_free(client_entry);
@@ -1534,6 +1532,7 @@ SilcChannelEntry silc_client_add_channel(SilcClient client,
 SilcBool silc_client_del_channel(SilcClient client, SilcClientConnection conn,
                                 SilcChannelEntry channel)
 {
+  SilcIDCacheEntry id_cache;
   SilcBool ret;
   SilcCipher key;
   SilcHmac hmac;
@@ -1547,6 +1546,9 @@ SilcBool silc_client_del_channel(SilcClient client, SilcClientConnection conn,
   SILC_LOG_DEBUG(("Deleting channel %p", channel));
 
   silc_mutex_lock(conn->internal->lock);
+  if (silc_idcache_find_by_context(conn->internal->channel_cache, channel,
+                                  &id_cache))
+    silc_free(id_cache->name);
   ret = silc_idcache_del_by_context(conn->internal->channel_cache,
                                    channel, NULL);
   silc_mutex_unlock(conn->internal->lock);
@@ -1626,7 +1628,7 @@ void silc_client_lock_channel(SilcChannelEntry channel_entry)
   silc_rwlock_rdlock(channel_entry->internal.lock);
 }
 
-/* Unlock client */
+/* Unlock channel */
 
 void silc_client_unlock_channel(SilcChannelEntry channel_entry)
 {
@@ -1937,6 +1939,7 @@ SilcServerEntry silc_client_add_server(SilcClient client,
 SilcBool silc_client_del_server(SilcClient client, SilcClientConnection conn,
                                SilcServerEntry server)
 {
+  SilcIDCacheEntry id_cache;
   SilcBool ret;
 
   if (!server)
@@ -1948,6 +1951,9 @@ SilcBool silc_client_del_server(SilcClient client, SilcClientConnection conn,
   SILC_LOG_DEBUG(("Deleting server %p", server));
 
   silc_mutex_lock(conn->internal->lock);
+  if (silc_idcache_find_by_context(conn->internal->server_cache, server,
+                                  &id_cache))
+    silc_free(id_cache->name);
   ret = silc_idcache_del_by_context(conn->internal->server_cache,
                                    server, NULL);
   silc_mutex_unlock(conn->internal->lock);