From: Howard Chu Date: Thu, 28 Aug 2014 16:51:46 +0000 (+0100) Subject: Revert "ITS#7702 fix results with aliases" X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=f42c7c6bbc39e470e0a078613b659c6ad17e23fe;p=openldap Revert "ITS#7702 fix results with aliases" This reverts commit cac00c6a97bbbbcec75f2ebcffaae1dd1769a28e. --- diff --git a/servers/slapd/back-mdb/dn2id.c b/servers/slapd/back-mdb/dn2id.c index e658b625f3..f54ab998e9 100644 --- a/servers/slapd/back-mdb/dn2id.c +++ b/servers/slapd/back-mdb/dn2id.c @@ -556,8 +556,7 @@ mdb_id2name( MDB_cursor **cursp, ID id, struct berval *name, - struct berval *nname, - ID *iscopes ) + struct berval *nname ) { struct mdb_info *mdb = (struct mdb_info *) op->o_bd->be_private; MDB_dbi dbi = mdb->mi_dn2id; @@ -590,11 +589,6 @@ mdb_id2name( ptr = data.mv_data; ptr += data.mv_size - sizeof(ID); memcpy( &id, ptr, sizeof(ID) ); - if ( iscopes ) { - rc = mdb_idl_search( iscopes, id ); - if ( iscopes[rc] == id ) - return MDB_KEYEXIST; - } d = data.mv_data; nrlen = (d->nrdnlen[0] << 8) | d->nrdnlen[1]; rlen = data.mv_size - sizeof(diskNode) - nrlen; diff --git a/servers/slapd/back-mdb/proto-mdb.h b/servers/slapd/back-mdb/proto-mdb.h index 99e2828dea..3671425dbf 100644 --- a/servers/slapd/back-mdb/proto-mdb.h +++ b/servers/slapd/back-mdb/proto-mdb.h @@ -123,8 +123,7 @@ int mdb_id2name( MDB_cursor **cursp, ID eid, struct berval *name, - struct berval *nname, - ID *iscopes ); + struct berval *nname); int mdb_idscope( Operation *op, diff --git a/servers/slapd/back-mdb/search.c b/servers/slapd/back-mdb/search.c index f5cc881534..cbb66f7463 100644 --- a/servers/slapd/back-mdb/search.c +++ b/servers/slapd/back-mdb/search.c @@ -733,9 +733,12 @@ dn2entry_retry: if (scopes[0].mid > 1) { cursor = 1; for (cscope = 1; cscope <= scopes[0].mid; cscope++) { + /* Ignore the original base */ + if (scopes[cscope].mid == base->e_id) + continue; iscopes[cursor++] = scopes[cscope].mid; } - iscopes[0] = scopes[0].mid; + iscopes[0] = scopes[0].mid - 1; } else { iscopes[0] = 0; } @@ -748,7 +751,7 @@ dn2entry_retry: id = NOID; else id = isc.id; - cscope = 1; /* skip original base */ + cscope = 0; } else { id = mdb_idl_first( candidates, &cursor ); } @@ -949,7 +952,7 @@ notfound: pdn = base->e_name; pndn = base->e_nname; } else { - mdb_id2name( op, ltid, &isc.mc, scopes[isc.nscope].mid, &pdn, &pndn, NULL ); + mdb_id2name( op, ltid, &isc.mc, scopes[isc.nscope].mid, &pdn, &pndn ); } e->e_name.bv_len = pdn.bv_len; e->e_nname.bv_len = pndn.bv_len; @@ -1126,13 +1129,7 @@ loop_continue: mdb_entry_return( op, base ); rs->sr_err = mdb_id2entry(op, mci, isc.id, &base); if ( !rs->sr_err ) { - rc = mdb_id2name( op, ltid, &isc.mc, isc.id, &base->e_name, &base->e_nname, - op->ors_scope == LDAP_SCOPE_SUBTREE ? iscopes : NULL ); - if ( rc == MDB_KEYEXIST ) { - mdb_entry_return( op, base ); - base = NULL; - continue; - } + mdb_id2name( op, ltid, &isc.mc, isc.id, &base->e_name, &base->e_nname ); isc.numrdns = 0; if (isc.oscope == LDAP_SCOPE_ONELEVEL) isc.oscope = LDAP_SCOPE_BASE; diff --git a/servers/slapd/back-mdb/tools.c b/servers/slapd/back-mdb/tools.c index 7ccf824482..a84de6f4c8 100644 --- a/servers/slapd/back-mdb/tools.c +++ b/servers/slapd/back-mdb/tools.c @@ -380,7 +380,7 @@ mdb_tool_entry_get_int( BackendDB *be, ID id, Entry **ep ) op.o_tmpmemctx = NULL; op.o_tmpmfuncs = &ch_mfuncs; if ( slapMode & SLAP_TOOL_READONLY ) { - rc = mdb_id2name( &op, mdb_tool_txn, &idcursor, id, &dn, &ndn, NULL ); + rc = mdb_id2name( &op, mdb_tool_txn, &idcursor, id, &dn, &ndn ); if ( rc ) { rc = LDAP_OTHER; if ( e ) {