From: Howard Chu Date: Tue, 27 Jan 2015 22:26:33 +0000 (+0000) Subject: ITS#8036 fix regression from ITS#7904 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=cafa06d55b4fbd1fc6716314c2f6fe3257d885b3;p=openldap ITS#8036 fix regression from ITS#7904 --- 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;