X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;ds=sidebyside;f=servers%2Fslapd%2Fsearch.c;h=73f82a00437f36bf1482e476dcb9e4086f6dd36d;hb=e4b899df95374d56f79350a146fea649db3b2a57;hp=2dfa2b9948c9bf6c47edaafd061f900b8cf2efb6;hpb=516fd0ff50dd80dfeee0d2d40daf023318e7ace1;p=openldap diff --git a/servers/slapd/search.c b/servers/slapd/search.c index 2dfa2b9948..73f82a0043 100644 --- a/servers/slapd/search.c +++ b/servers/slapd/search.c @@ -70,7 +70,8 @@ do_search( * scope ENUMERATED { * baseObject (0), * singleLevel (1), - * wholeSubtree (2) + * wholeSubtree (2), + * subordinate (3) -- OpenLDAP extension * }, * derefAliases ENUMERATED { * neverDerefaliases (0), @@ -100,6 +101,7 @@ do_search( case LDAP_SCOPE_BASE: case LDAP_SCOPE_ONELEVEL: case LDAP_SCOPE_SUBTREE: + case LDAP_SCOPE_SUBORDINATE: break; default: send_ldap_error( op, rs, LDAP_PROTOCOL_ERROR, "invalid scope" ); @@ -355,7 +357,8 @@ do_search( be_manageDSAit = manageDSAit; } - if ( (op->o_bd = select_backend( &op->o_req_ndn, be_manageDSAit, 1 )) == NULL ) { + op->o_bd = select_backend( &op->o_req_ndn, be_manageDSAit, 1 ); + if ( op->o_bd == NULL ) { rs->sr_ref = referral_rewrite( default_referral, NULL, &op->o_req_dn, op->ors_scope );