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);
SilcBool silc_client_del_channel(SilcClient client, SilcClientConnection conn,
SilcChannelEntry channel)
{
+ SilcIDCacheEntry id_cache;
SilcBool ret;
SilcCipher key;
SilcHmac hmac;
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);
silc_rwlock_rdlock(channel_entry->internal.lock);
}
-/* Unlock client */
+/* Unlock channel */
void silc_client_unlock_channel(SilcChannelEntry channel_entry)
{
SilcBool silc_client_del_server(SilcClient client, SilcClientConnection conn,
SilcServerEntry server)
{
+ SilcIDCacheEntry id_cache;
SilcBool ret;
if (!server)
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);