X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fback-mdb%2Fdn2entry.c;h=26bf8464376b26012b75d940e4b0ab3c501d1fbe;hb=6018fe9671dcbb90e3845bc14851858c5d9fdf2a;hp=3aa81675343cd2f54ba616ba4955d6268b985d0c;hpb=ee3f05000055619ec6d4eee48b57fa5cb6085127;p=openldap diff --git a/servers/slapd/back-mdb/dn2entry.c b/servers/slapd/back-mdb/dn2entry.c index 3aa8167534..26bf846437 100644 --- a/servers/slapd/back-mdb/dn2entry.c +++ b/servers/slapd/back-mdb/dn2entry.c @@ -31,26 +31,38 @@ int mdb_dn2entry( Operation *op, MDB_txn *tid, + MDB_cursor *m2, struct berval *dn, Entry **e, int matched ) { + struct mdb_info *mdb = (struct mdb_info *) op->o_bd->be_private; int rc, rc2; ID id = NOID; struct berval mbv, nmbv; + MDB_cursor *mc; Debug(LDAP_DEBUG_TRACE, "mdb_dn2entry(\"%s\")\n", dn->bv_val, 0, 0 ); *e = NULL; - rc = mdb_dn2id( op, tid, dn, &id, &mbv, &nmbv ); + rc = mdb_dn2id( op, tid, m2, dn, &id, &mbv, &nmbv ); if ( rc ) { - if ( matched ) - rc2 = mdb_id2entry( op, tid, id, e ); + if ( matched ) { + rc2 = mdb_cursor_open( tid, mdb->mi_id2entry, &mc ); + if ( rc2 == MDB_SUCCESS ) { + rc2 = mdb_id2entry( op, mc, id, e ); + mdb_cursor_close( mc ); + } + } } else { - rc = mdb_id2entry( op, tid, id, e ); + rc = mdb_cursor_open( tid, mdb->mi_id2entry, &mc ); + if ( rc == MDB_SUCCESS ) { + rc = mdb_id2entry( op, mc, id, e ); + mdb_cursor_close(mc); + } } if ( *e ) { (*e)->e_name = mbv;