diff options
author | Noriko Hosoi <nhosoi@redhat.com> | 2010-02-22 12:00:10 -0800 |
---|---|---|
committer | Noriko Hosoi <nhosoi@redhat.com> | 2010-02-22 12:00:10 -0800 |
commit | c26ba79b19bb580a6fb8bf8d6d096bf888d197d6 (patch) | |
tree | f3382f41b975b4a247706894ae9decd97692777e /ldap | |
parent | 4205086e4f237a52eb9113cd95f9cf87b39e9ed4 (diff) | |
download | ds-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.c | 12 |
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 ); |