X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fback-ldbm%2Fsearch.c;h=0f949ca5b00aa35d7d33dc4634259ad9a910ebd1;hb=a4d161cff64c74e03e5898eae104d5d52cc54a91;hp=75aa5347f783a463b8bd5e99d275c146e862a794;hpb=ea83f6a66972de84aa3efe2cd53f50f69465588c;p=openldap diff --git a/servers/slapd/back-ldbm/search.c b/servers/slapd/back-ldbm/search.c index 75aa5347f7..0f949ca5b0 100644 --- a/servers/slapd/back-ldbm/search.c +++ b/servers/slapd/back-ldbm/search.c @@ -2,7 +2,7 @@ /* $OpenLDAP$ */ /* This work is part of OpenLDAP Software . * - * Copyright 1998-2005 The OpenLDAP Foundation. + * Copyright 1998-2006 The OpenLDAP Foundation. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -272,7 +272,6 @@ searchit: rs->sr_entry = e; -#ifdef LDBM_SUBENTRIES if ( is_entry_subentry( e ) ) { if( op->ors_scope != LDAP_SCOPE_BASE ) { if(!get_subentries_visibility( op )) { @@ -289,7 +288,6 @@ searchit: /* only subentries are visible */ goto loop_continue; } -#endif if ( op->ors_deref & LDAP_DEREF_SEARCHING && is_entry_alias( e ) ) @@ -417,13 +415,11 @@ searchit: { scopeok = dnIsSuffix( &e->e_nname, &realbase ); -#ifdef LDAP_SCOPE_SUBORDINATE } else if ( !scopeok && op->ors_scope == LDAP_SCOPE_SUBORDINATE ) { scopeok = !dn_match( &e->e_nname, &realbase ) && dnIsSuffix( &e->e_nname, &realbase ); -#endif } else { scopeok = 1; @@ -432,20 +428,16 @@ searchit: if ( scopeok ) { if (e) { rs->sr_flags = 0; - result = send_search_entry( op, rs ); - - switch ( result ) { - case 0: /* entry sent ok */ - break; - case 1: /* entry not sent */ - break; - case -1: /* connection closed */ + rs->sr_err = send_search_entry( op, rs ); + + switch ( rs->sr_err ) { + case LDAP_UNAVAILABLE: /* connection closed */ cache_return_entry_r( &li->li_cache, e ); rc = LDAP_SUCCESS; goto done; - case SLAPD_SEND_SIZELIMIT: + case LDAP_SIZELIMIT_EXCEEDED: cache_return_entry_r( &li->li_cache, e ); - rc = rs->sr_err = LDAP_SIZELIMIT_EXCEEDED; + rc = rs->sr_err; rs->sr_entry = NULL; send_ldap_result( op, rs ); rc = LDAP_SUCCESS; @@ -523,10 +515,8 @@ search_candidates( AttributeAssertion aa_ref, aa_alias; struct berval bv_ref = { sizeof("referral")-1, "referral" }; struct berval bv_alias = { sizeof("alias")-1, "alias" }; -#ifdef LDBM_SUBENTRIES Filter sf; AttributeAssertion aa_subentry; -#endif Debug(LDAP_DEBUG_TRACE, "search_candidates: base=\"%s\" s=%d d=%d\n", @@ -566,7 +556,6 @@ search_candidates( fand.f_dn = &e->e_nname; fand.f_next = xf.f_or == filter ? filter : &xf ; -#ifdef LDBM_SUBENTRIES if ( get_subentries_visibility( op )) { struct berval bv_subentry = { sizeof("SUBENTRY")-1, "SUBENTRY" }; sf.f_choice = LDAP_FILTER_EQUALITY; @@ -576,7 +565,6 @@ search_candidates( sf.f_next = fand.f_next; fand.f_next = &sf; } -#endif candidates = filter_candidates( op, &f ); return( candidates );