]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-bdb/search.c
ITS#3226: Clear attribute flags after schema_check failed
[openldap] / servers / slapd / back-bdb / search.c
index 3bac733bf57daabe4210238c1f6d48459ffe0c7f..75ab32b2d49812dbfa5404c1acba6939232b304d 100644 (file)
@@ -364,9 +364,13 @@ int bdb_search( Operation *op, SlapReply *rs )
 int bdb_psearch( Operation *op, SlapReply *rs, Operation *sop,
        Entry *ps_e, int ps_type )
 {
+       int     rc;
+
        sop->o_private = op->o_private;
-       bdb_do_search( op, rs, sop, ps_e, ps_type );
+       rc = bdb_do_search( op, rs, sop, ps_e, ps_type );
        sop->o_private = NULL;
+
+       return rc;
 }
 
 /* For persistent searches, op is the currently executing operation,
@@ -416,13 +420,13 @@ bdb_do_search( Operation *op, SlapReply *rs, Operation *sop,
        BerVarray       syncUUID_set = NULL;
        int                     syncUUID_set_cnt = 0;
 
-       struct  bdb_op_info *opinfo = NULL;
+       struct  bdb_op_info     *opinfo = NULL;
+       DB_TXN                  *ltid = NULL;
 
 #ifdef NEW_LOGGING
        LDAP_LOG( OPERATION, ENTRY, "bdb_search\n", 0, 0, 0 );
 #else
-       Debug( LDAP_DEBUG_TRACE, "=> bdb_search\n",
-               0, 0, 0);
+       Debug( LDAP_DEBUG_TRACE, "=> bdb_search\n", 0, 0, 0);
 #endif
        attrs = sop->oq_search.rs_attrs;
 
@@ -522,7 +526,8 @@ bdb_do_search( Operation *op, SlapReply *rs, Operation *sop,
        }
 
        if ( opinfo ) {
-               locker = TXN_ID( opinfo->boi_txn );
+               ltid = opinfo->boi_txn;
+               locker = TXN_ID( ltid );
        } else {
                rs->sr_err = LOCK_ID( bdb->bi_dbenv, &locker );
 
@@ -548,7 +553,7 @@ bdb_do_search( Operation *op, SlapReply *rs, Operation *sop,
        } else {
 dn2entry_retry:
                /* get entry with reader lock */
-               rs->sr_err = bdb_dn2entry( op, NULL, &sop->o_req_ndn, &ei,
+               rs->sr_err = bdb_dn2entry( op, ltid, &sop->o_req_ndn, &ei,
                        1, locker, &lock );
        }
 
@@ -915,7 +920,7 @@ loop_begin:
 id2entry_retry:
                        /* get the entry with reader lock */
                        ei = NULL;
-                       rs->sr_err = bdb_cache_find_id( op, NULL,
+                       rs->sr_err = bdb_cache_find_id( op, ltid,
                                id, &ei, 0, locker, &lock );
 
                        if (rs->sr_err == LDAP_BUSY) {