]> git.sur5r.net Git - openldap/commitdiff
Fix bdb_tool_dn2id_get() - nobody should be calling bdb_dn2id() directly,
authorHoward Chu <hyc@openldap.org>
Tue, 19 Jul 2005 02:12:34 +0000 (02:12 +0000)
committerHoward Chu <hyc@openldap.org>
Tue, 19 Jul 2005 02:12:34 +0000 (02:12 +0000)
always call through the cache instead - bdb_cache_find_ndn().

servers/slapd/back-bdb/tools.c

index c64bd149ab86bba0f3b37bd638dda72434f6101e..b4be34d677b7603e9fc9d9114c8d0c107e8af4d6 100644 (file)
@@ -140,7 +140,8 @@ ID bdb_tool_dn2id_get(
 {
        Operation op = {0};
        Opheader ohdr = {0};
-       EntryInfo ei = {0};
+       EntryInfo *ei = NULL;
+       int rc;
 
        if ( BER_BVISEMPTY(dn) )
                return 0;
@@ -150,11 +151,12 @@ ID bdb_tool_dn2id_get(
        op.o_tmpmemctx = NULL;
        op.o_tmpmfuncs = &ch_mfuncs;
 
-       ei.bei_id = NOID;
-
-       bdb_dn2id( &op, NULL, dn, &ei );
+       rc = bdb_cache_find_ndn( &op, NULL, dn, &ei );
+       if ( ei ) bdb_cache_entryinfo_unlock( ei );
+       if ( rc == DB_NOTFOUND )
+               return NOID;
        
-       return ei.bei_id;
+       return ei->bei_id;
 }
 
 int bdb_tool_id2entry_get(
@@ -327,8 +329,8 @@ ID bdb_tool_entry_put(
        assert( be != NULL );
        assert( slapMode & SLAP_TOOL_MODE );
 
-       assert( text != NULL );
-       assert( text->bv_val != NULL );
+       assert( text );
+       assert( text->bv_val );
        assert( text->bv_val[0] == '\0' );      /* overconservative? */
 
        Debug( LDAP_DEBUG_TRACE, "=> " LDAP_XSTRING(bdb_tool_entry_put)
@@ -524,8 +526,8 @@ ID bdb_tool_entry_modify(
        assert( be != NULL );
        assert( slapMode & SLAP_TOOL_MODE );
 
-       assert( text != NULL );
-       assert( text->bv_val != NULL );
+       assert( text );
+       assert( text->bv_val );
        assert( text->bv_val[0] == '\0' );      /* overconservative? */
 
        assert ( e->e_id != NOID );