]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-bdb/cache.c
return structuralObjectClass errors
[openldap] / servers / slapd / back-bdb / cache.c
index d82536dd2264be7ef8cd98357e31539b0dedad6d..b55b8d053d78fd6202b6fe92a75de97a2fc81351 100644 (file)
@@ -707,6 +707,7 @@ again:      ldap_pvt_thread_rdwr_rlock( &bdb->bi_cache.c_rwlock );
                                &ep->e_nname, eip );
                        if ( *eip ) islocked = 1;
                        if ( rc ) {
+                               ep->e_private = NULL;
 #ifdef SLAP_ZONE_ALLOC
                                bdb_entry_return( bdb, ep, (*eip)->bei_zseq );
 #else
@@ -811,6 +812,7 @@ load1:
                bdb_cache_entryinfo_unlock( *eip );
        }
        if ( ep ) {
+               ep->e_private = NULL;
 #ifdef SLAP_ZONE_ALLOC
                bdb_entry_return( bdb, ep, (*eip)->bei_zseq );
 #else
@@ -1030,6 +1032,8 @@ bdb_cache_modrdn(
                rdn.bv_len = ptr - rdn.bv_val;
        }
        ber_dupbv( &ei->bei_rdn, &rdn );
+       pei->bei_ckids--;
+       if ( pei->bei_dkids ) pei->bei_dkids--;
 #endif
 
        if (!ein) {
@@ -1056,6 +1060,8 @@ bdb_cache_modrdn(
                ei->bei_modrdns = bdb->bi_modrdns;
                ldap_pvt_thread_mutex_unlock( &bdb->bi_modrdns_mutex );
        }
+       ein->bei_ckids++;
+       if ( ein->bei_dkids ) ein->bei_dkids++;
 #endif
        avl_insert( &ein->bei_kids, ei, bdb_rdn_cmp, avl_dup_error );
        bdb_cache_entryinfo_unlock( ein );