{
SilcIDListPurge i = (SilcIDListPurge)context;
- SILC_LOG_DEBUG(("Start"));
+ SILC_LOG_DEBUG(("Purging cache"));
silc_idcache_purge(i->cache);
silc_schedule_task_add(i->schedule, 0,
channel->router = router;
channel->channel_key = channel_key;
channel->hmac = hmac;
- channel->created = time(0);
+ channel->created = channel->updated = time(0);
if (!channel->hmac)
if (!silc_hmac_alloc(SILC_DEFAULT_HMAC, NULL, &channel->hmac)) {
silc_free(channel);
SilcChannelClientEntry chl = (SilcChannelClientEntry)context;
SILC_LOG_DEBUG(("Removing client %s from channel %s",
- chl->client->nickname, chl->channel->channel_name));
+ chl->client->nickname ? chl->client->nickname :
+ (unsigned char *)"", chl->channel->channel_name));
/* Remove the context from the client's channel hash table as that
table and channel's user_list hash table share this same context. */
int silc_idlist_del_channel(SilcIDList id_list, SilcChannelEntry entry)
{
if (entry) {
- SILC_LOG_DEBUG(("Deleting channel %s", entry->channel_name));
-
/* Remove from cache */
if (!silc_idcache_del_by_context(id_list->channels, entry))
return FALSE;
+ SILC_LOG_DEBUG(("Deleting channel %s", entry->channel_name));
+
/* 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
callback. */
SILC_LOG_DEBUG(("Found"));
+ /* Touch channel */
+ ((SilcChannelEntry)id_cache->context)->updated = time(NULL);
+
return id_cache->context;
}
SILC_LOG_DEBUG(("Found"));
+ /* Touch channel */
+ channel->updated = time(NULL);
+
return channel;
}
SILC_LOG_DEBUG(("Replaced"));
+ /* Touch channel */
+ channel->updated = time(NULL);
+
return channel;
}