silc_hash_free(idata->hash);
if (idata->public_key)
silc_pkcs_public_key_free(idata->public_key);
+
+ idata->send_key = NULL;
+ idata->receive_key = NULL;
+ idata->rekey = NULL;
+ idata->hmac_send = NULL;
+ idata->hmac_receive = NULL;
+ idata->hash = NULL;
+ idata->public_key = NULL;
}
/* Purges ID cache */
if (entry) {
/* Remove from cache */
- if (entry->id)
- if (!silc_idcache_del_by_id(id_list->servers, (void *)entry->id))
- return FALSE;
+ if (!silc_idcache_del_by_context(id_list->servers, entry))
+ return FALSE;
/* Free data */
silc_free(entry->server_name);
silc_free(entry->id);
+ silc_free(entry->server_info);
memset(entry, 'F', sizeof(*entry));
silc_free(entry);
if (entry) {
/* Remove from cache */
- if (entry->id)
- if (!silc_idcache_del_by_context(id_list->clients, entry))
- return FALSE;
+ if (!silc_idcache_del_by_context(id_list->clients, entry))
+ return FALSE;
/* Free data */
silc_free(entry->nickname);
+ silc_free(entry->servername);
silc_free(entry->username);
silc_free(entry->userinfo);
silc_free(entry->id);
silc_free(client->id);
silc_hash_table_free(client->channels);
- memset(client, 'F', sizeof(*client));
+ memset(client, 'A', sizeof(*client));
silc_free(client);
}
}
{
SilcChannelEntry channel;
- SILC_LOG_DEBUG(("Adding new channel entry"));
+ SILC_LOG_DEBUG(("Adding new channel %s", channel_name));
channel = silc_calloc(1, sizeof(*channel));
channel->channel_name = channel_name;
int silc_idlist_del_channel(SilcIDList id_list, SilcChannelEntry entry)
{
- SILC_LOG_DEBUG(("Start"));
-
if (entry) {
+ SILC_LOG_DEBUG(("Deleting channel %s", entry->channel_name));
+
/* Remove from cache */
- if (entry->id)
- if (!silc_idcache_del_by_id(id_list->channels, (void *)entry->id))
- return FALSE;
+ if (!silc_idcache_del_by_context(id_list->channels, entry))
+ return FALSE;
/* Free all client entrys from the users list. The silc_hash_table_free
will free all the entries so they are not freed at the foreach