From cafa06d55b4fbd1fc6716314c2f6fe3257d885b3 Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Tue, 27 Jan 2015 22:26:33 +0000 Subject: [PATCH] ITS#8036 fix regression from ITS#7904 --- servers/slapd/back-mdb/search.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/servers/slapd/back-mdb/search.c b/servers/slapd/back-mdb/search.c index 185d9f1cc5..352ca69d53 100644 --- a/servers/slapd/back-mdb/search.c +++ b/servers/slapd/back-mdb/search.c @@ -358,15 +358,27 @@ mdb_writewait( Operation *op, slap_callback *sc ) } static int -mdb_waitfixup( Operation *op, ww_ctx *ww, MDB_cursor *mci, MDB_cursor *mcd ) +mdb_waitfixup( Operation *op, ww_ctx *ww, MDB_cursor *mci, MDB_cursor *mcd, ID2 *scopes ) { int rc = 0; ww->flag = 0; mdb_txn_renew( ww->txn ); mdb_cursor_renew( ww->txn, mci ); mdb_cursor_renew( ww->txn, mcd ); + + if ( scopes[0].mid > 1 ) { + MDB_val key; + int i; + key.mv_size = sizeof(ID); + for ( i=1; imcd ) { MDB_val key, data; + key.mv_size = sizeof(ID); key.mv_data = &ww->key; data = ww->data; @@ -1035,7 +1047,7 @@ notfound: rs->sr_ref = NULL; if ( wwctx.flag ) { - rs->sr_err = mdb_waitfixup( op, &wwctx, mci, mcd ); + rs->sr_err = mdb_waitfixup( op, &wwctx, mci, mcd, scopes ); if ( rs->sr_err ) { send_ldap_result( op, rs ); goto done; @@ -1097,7 +1109,7 @@ notfound: goto done; } if ( wwctx.flag ) { - rs->sr_err = mdb_waitfixup( op, &wwctx, mci, mcd ); + rs->sr_err = mdb_waitfixup( op, &wwctx, mci, mcd, scopes ); if ( rs->sr_err ) { send_ldap_result( op, rs ); goto done; -- 2.39.5