summaryrefslogtreecommitdiffstats
path: root/ldap
diff options
context:
space:
mode:
authorNoriko Hosoi <nhosoi@redhat.com>2010-02-22 12:00:10 -0800
committerNoriko Hosoi <nhosoi@redhat.com>2010-02-22 12:00:10 -0800
commitc26ba79b19bb580a6fb8bf8d6d096bf888d197d6 (patch)
treef3382f41b975b4a247706894ae9decd97692777e /ldap
parent4205086e4f237a52eb9113cd95f9cf87b39e9ed4 (diff)
downloadds-c26ba79b19bb580a6fb8bf8d6d096bf888d197d6.tar.gz
ds-c26ba79b19bb580a6fb8bf8d6d096bf888d197d6.tar.xz
ds-c26ba79b19bb580a6fb8bf8d6d096bf888d197d6.zip
567370 - dncache: assertion failure in id2entry_delete
https://bugzilla.redhat.com/show_bug.cgi?id=567370 Descriptino: When deleting an entry, if the dn is in the dn cache, it should be removed. The original code was trying to remove it regardless of the existence in the dn cache. Fixed it so that only when the dn is in the cache, it's removed.
Diffstat (limited to 'ldap')
-rw-r--r--ldap/servers/slapd/back-ldbm/id2entry.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/ldap/servers/slapd/back-ldbm/id2entry.c b/ldap/servers/slapd/back-ldbm/id2entry.c
index 05a0181a..21f21fc6 100644
--- a/ldap/servers/slapd/back-ldbm/id2entry.c
+++ b/ldap/servers/slapd/back-ldbm/id2entry.c
@@ -190,10 +190,14 @@ id2entry_delete( backend *be, struct backentry *e, back_txn *txn )
if (entryrdn_get_switch())
{
ldbm_instance *inst = (ldbm_instance *)be->be_instance_info;
- Slapi_DN *sdn = slapi_sdn_dup(slapi_entry_get_sdn_const(e->ep_entry));
- struct backdn *bdn = backdn_init(sdn, e->ep_id, 1);
- CACHE_REMOVE(&inst->inst_dncache, bdn);
- CACHE_RETURN(&inst->inst_dncache, &bdn);
+ struct backdn *bdn = dncache_find_id(&inst->inst_dncache, e->ep_id);
+ if (bdn) {
+ slapi_log_error(SLAPI_LOG_CACHE, ID2ENTRY,
+ "dncache_find_id returned: %s\n",
+ slapi_sdn_get_dn(bdn->dn_sdn));
+ CACHE_REMOVE(&inst->inst_dncache, bdn);
+ CACHE_RETURN(&inst->inst_dncache, &bdn);
+ }
}
rc = db->del( db,db_txn,&key,0 );