X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fbackglue.c;h=1031e7e23285af677cd1dbcb0fb1d494f0f9bfbf;hb=53d41587adf505c0421b5bf47516ebd0e66818c7;hp=99d88b0816949b93c541b51a8de1711468d04ea9;hpb=a6453f28f89e49786dff3c137bac10df14b9ca98;p=openldap diff --git a/servers/slapd/backglue.c b/servers/slapd/backglue.c index 99d88b0816..1031e7e232 100644 --- a/servers/slapd/backglue.c +++ b/servers/slapd/backglue.c @@ -79,7 +79,6 @@ glue_back_select ( typedef struct glue_state { int err; - int slimit; int matchlen; char *matched; int nrefs; @@ -93,13 +92,6 @@ glue_op_response ( Operation *op, SlapReply *rs ) switch(rs->sr_type) { case REP_SEARCH: - if ( gs->slimit != SLAP_NO_LIMIT - && rs->sr_nentries >= gs->slimit ) - { - rs->sr_err = gs->err = LDAP_SIZELIMIT_EXCEEDED; - return -1; - } - /* fallthru */ case REP_SEARCHREF: return SLAP_CB_CONTINUE; @@ -242,9 +234,9 @@ glue_op_search ( Operation *op, SlapReply *rs ) BackendInfo *bi0 = op->o_bd->bd_info; int i; long stoptime = 0; - glue_state gs = {0, 0, 0, NULL, 0, NULL}; + glue_state gs = {0, 0, NULL, 0, NULL}; slap_callback cb = { NULL, glue_op_response, NULL, NULL }; - int scope0, slimit0, tlimit0; + int scope0, tlimit0; struct berval dn, ndn, *pdn; cb.sc_private = &gs; @@ -266,9 +258,7 @@ glue_op_search ( Operation *op, SlapReply *rs ) case LDAP_SCOPE_ONELEVEL: case LDAP_SCOPE_SUBTREE: -#ifdef LDAP_SCOPE_SUBORDINATE case LDAP_SCOPE_SUBORDINATE: /* FIXME */ -#endif #if 0 if ( op->o_sync ) { @@ -285,7 +275,6 @@ glue_op_search ( Operation *op, SlapReply *rs ) op->o_callback = &cb; rs->sr_err = gs.err = LDAP_UNWILLING_TO_PERFORM; scope0 = op->ors_scope; - slimit0 = gs.slimit = op->ors_slimit; tlimit0 = op->ors_tlimit; dn = op->o_req_dn; ndn = op->o_req_ndn; @@ -313,13 +302,6 @@ glue_op_search ( Operation *op, SlapReply *rs ) break; } } - if (slimit0 != SLAP_NO_LIMIT) { - op->ors_slimit = slimit0 - rs->sr_nentries; - if (op->ors_slimit < 0) { - rs->sr_err = gs.err = LDAP_SIZELIMIT_EXCEEDED; - break; - } - } rs->sr_err = 0; /* * check for abandon @@ -339,6 +321,9 @@ glue_op_search ( Operation *op, SlapReply *rs ) op->o_req_dn = op->o_bd->be_suffix[0]; op->o_req_ndn = op->o_bd->be_nsuffix[0]; rs->sr_err = op->o_bd->be_search(op, rs); + if ( rs->sr_err == LDAP_NO_SUCH_OBJECT ) { + gs.err = LDAP_SUCCESS; + } } else if (scope0 == LDAP_SCOPE_SUBTREE && dn_match(&op->o_bd->be_nsuffix[0], &ndn)) @@ -354,6 +339,8 @@ glue_op_search ( Operation *op, SlapReply *rs ) if ( rs->sr_err == LDAP_NO_SUCH_OBJECT ) { gs.err = LDAP_SUCCESS; } + op->o_req_dn = dn; + op->o_req_ndn = ndn; } else if (dnIsSuffix(&ndn, &op->o_bd->be_nsuffix[0])) { rs->sr_err = op->o_bd->be_search( op, rs ); @@ -380,7 +367,6 @@ glue_op_search ( Operation *op, SlapReply *rs ) } end_of_loop:; op->ors_scope = scope0; - op->ors_slimit = slimit0; op->ors_tlimit = tlimit0; op->o_req_dn = dn; op->o_req_ndn = ndn;