]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-bdb/id2entry.c
Patch: Delete the buggy surrogate parent code (ITS#1815)
[openldap] / servers / slapd / back-bdb / id2entry.c
index 0a841cab21e1c7099e740d2ef8e7886d067e8133..9c8c9657e4e46aef515193ff8c68254cd38abc92 100644 (file)
@@ -104,7 +104,7 @@ int bdb_id2entry_rw(
        }
 
        /* fetch it */
-       rc = db->get( db, tid, &key, &data, bdb->bi_db_opflags );
+       rc = db->get( db, tid, &key, &data, bdb->bi_db_opflags | ( rw ? DB_RMW : 0 ));
 
        if( rc != 0 ) {
                return rc;
@@ -124,6 +124,9 @@ int bdb_id2entry_rw(
        }
 
        if ( rc == 0 ) {
+#ifdef BDB_HIER
+               bdb_fix_dn(be, id, *e);
+#endif
                ret = bdb_cache_add_entry_rw( bdb->bi_dbenv,
                                &bdb->bi_cache, *e, rw, locker, lock);
                while ( ret == 1 || ret == -1 ) {
@@ -155,10 +158,6 @@ int bdb_id2entry_rw(
                rc = ret;
        }
 
-#ifdef BDB_HIER
-       bdb_fix_dn(be, id, *e);
-#endif
-
        if (rc == 0) {
                bdb_cache_entry_commit(*e);
        }