X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;ds=sidebyside;f=servers%2Fslapd%2Fsearch.c;h=73f82a00437f36bf1482e476dcb9e4086f6dd36d;hb=1586a68219cf85e9caaafcf2259c9bc249358077;hp=d842c6419b7420db6ede11d184395fd4f4bb5e65;hpb=ee34f3fb6439d0b71915d37cef41c1332b2d65a1;p=openldap diff --git a/servers/slapd/search.c b/servers/slapd/search.c index d842c6419b..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 ); @@ -451,7 +454,7 @@ static char **anlist2charray( Operation *op, AttributeName *an ) static void initSearchPlugin( Operation *op, char **attrs, int managedsait ) { - slapi_x_pblock_set_operation( op->o_pb, op ); + slapi_int_pblock_set_operation( op->o_pb, op ); slapi_pblock_set( op->o_pb, SLAPI_SEARCH_TARGET, (void *)op->o_req_dn.bv_val ); slapi_pblock_set( op->o_pb, SLAPI_SEARCH_SCOPE, (void *)op->ors_scope ); slapi_pblock_set( op->o_pb, SLAPI_SEARCH_DEREF, (void *)op->ors_deref );