X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilcapputil%2Fsilcidcache.c;fp=lib%2Fsilcapputil%2Fsilcidcache.c;h=00237fb829564a71f212e5aa3c318a4af595375c;hb=fcc066ee40b688943ab329089a964630b9456e86;hp=7340414a3d22c10687255ba41d047d5245118b46;hpb=1cb496659901e26424d9270160044de50195fadc;p=silc.git diff --git a/lib/silcapputil/silcidcache.c b/lib/silcapputil/silcidcache.c index 7340414a..00237fb8 100644 --- a/lib/silcapputil/silcidcache.c +++ b/lib/silcapputil/silcidcache.c @@ -244,15 +244,19 @@ SilcBool silc_idcache_update(SilcIDCache cache, SilcIDCacheEntry entry, return FALSE; if (new_id) { - if (!silc_hash_table_del_by_context(cache->id_table, entry->id, entry)) - return FALSE; + if (entry->id) { + if (!silc_hash_table_del_by_context(cache->id_table, entry->id, entry)) + return FALSE; - if (cache->id_type == SILC_ID_CLIENT) - *(SilcClientID *)entry->id = *(SilcClientID *)new_id; - if (cache->id_type == SILC_ID_SERVER) - *(SilcServerID *)entry->id = *(SilcServerID *)new_id; - if (cache->id_type == SILC_ID_CHANNEL) - *(SilcChannelID *)entry->id = *(SilcChannelID *)new_id; + if (cache->id_type == SILC_ID_CLIENT) + *(SilcClientID *)entry->id = *(SilcClientID *)new_id; + if (cache->id_type == SILC_ID_SERVER) + *(SilcServerID *)entry->id = *(SilcServerID *)new_id; + if (cache->id_type == SILC_ID_CHANNEL) + *(SilcChannelID *)entry->id = *(SilcChannelID *)new_id; + } else { + entry->id = new_id; + } if (!silc_hash_table_add(cache->id_table, entry->id, entry)) return FALSE;