]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-bdb/dn2id.c
document option '-F'
[openldap] / servers / slapd / back-bdb / dn2id.c
index b157ad23a9245f40b15eff0d8005893ef342181b..c76c8ea613288a9eac2353b30ca83e39d3d48e01 100644 (file)
@@ -577,7 +577,7 @@ hdb_dn2id_delete(
        data.data = d;
 
        /* Delete our ID from the parent's list */
-       rc = cursor->c_get( cursor, &key, &data, DB_GET_BOTH_RANGE | DB_RMW );
+       rc = cursor->c_get( cursor, &key, &data, DB_GET_BOTH_RANGE );
        if ( rc == 0 ) {
                if ( !strcmp( d->nrdn, BEI(e)->bei_nrdn.bv_val ))
                        rc = cursor->c_del( cursor, 0 );
@@ -591,7 +591,7 @@ hdb_dn2id_delete(
         */
        if ( rc == 0 ) {
                BDB_ID2DISK( e->e_id, &nid );
-               rc = cursor->c_get( cursor, &key, &data, DB_SET | DB_RMW );
+               rc = cursor->c_get( cursor, &key, &data, DB_SET );
                if ( rc == 0 )
                        rc = cursor->c_del( cursor, 0 );
        }
@@ -825,6 +825,16 @@ hdb_dn2idl_internal(
        struct dn2id_cookie *cx
 )
 {
+       BDB_IDL_ZERO( cx->tmp );
+
+       if ( !cx->ei ) {
+               cx->ei = bdb_cache_find_info( cx->bdb, cx->id );
+               if ( !cx->ei ) {
+                       cx->rc = DB_NOTFOUND;
+                       goto saveit;
+               }
+       }
+
        if ( cx->bdb->bi_idl_cache_size ) {
                cx->key.data = &cx->id;
                cx->rc = bdb_idl_cache_get(cx->bdb, cx->db, &cx->key, cx->tmp);
@@ -835,15 +845,6 @@ hdb_dn2idl_internal(
                        goto gotit;
                }
        }
-       BDB_IDL_ZERO( cx->tmp );
-
-       if ( !cx->ei ) {
-               cx->ei = bdb_cache_find_info( cx->bdb, cx->id );
-               if ( !cx->ei ) {
-                       cx->rc = DB_NOTFOUND;
-                       goto saveit;
-               }
-       }
 
        bdb_cache_entryinfo_lock( cx->ei );