]> git.sur5r.net Git - openldap/commitdiff
Honour o_no_subordinate_glue
authorLuke Howard <lukeh@openldap.org>
Sat, 10 Jun 2006 12:31:22 +0000 (12:31 +0000)
committerLuke Howard <lukeh@openldap.org>
Sat, 10 Jun 2006 12:31:22 +0000 (12:31 +0000)
Don't pollute o_req_ndn after resetting (hyc please review)

servers/slapd/backglue.c

index 83cab67b52446097e66db54cf2e0449faeaf14c2..434d29e643c3e32009920732a77890a6922026c3 100644 (file)
@@ -347,6 +347,8 @@ glue_op_search ( Operation *op, SlapReply *rs )
                                continue;
                        if (!dnIsSuffix(&btmp->be_nsuffix[0], &b1->be_nsuffix[0]))
                                continue;
+                       if (get_no_subordinate_glue(op) && btmp != b1)
+                               continue;
 
                        if (tlimit0 != SLAP_NO_LIMIT) {
                                op->o_time = slap_get_time();
@@ -382,6 +384,9 @@ glue_op_search ( Operation *op, SlapReply *rs )
                        } else if (scope0 == LDAP_SCOPE_SUBTREE &&
                                dn_match(&op->o_bd->be_nsuffix[0], &ndn))
                        {
+                               op->ors_scope = LDAP_SCOPE_SUBTREE;
+                               op->o_req_dn = dn;
+                               op->o_req_ndn = ndn;
                                rs->sr_err = glue_sub_search( op, rs, b0, on );
 
                        } else if (scope0 == LDAP_SCOPE_SUBTREE &&
@@ -397,6 +402,9 @@ glue_op_search ( Operation *op, SlapReply *rs )
                                op->o_req_ndn = ndn;
 
                        } else if (dnIsSuffix(&ndn, &op->o_bd->be_nsuffix[0])) {
+                               op->ors_scope = scope0;
+                               op->o_req_dn = dn;
+                               op->o_req_ndn = ndn;
                                rs->sr_err = glue_sub_search( op, rs, b0, on );
                        }