From: Pierangelo Masarati Date: Thu, 12 May 2005 22:38:16 +0000 (+0000) Subject: import fix to sizelimit bug (ITS#3720) X-Git-Tag: OPENLDAP_REL_ENG_2_2_27~12 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=62a49ab496f6ce0460ce220d62a51df17a764563;p=thirdparty%2Fopenldap.git import fix to sizelimit bug (ITS#3720) --- diff --git a/CHANGES b/CHANGES index 60381c97bc..ee99ca1d6d 100644 --- a/CHANGES +++ b/CHANGES @@ -2,6 +2,7 @@ OpenLDAP 2.2 Change Log OpenLDAP 2.2.27 Engineering Fixed back-ldap/back-meta debug output of NULL strings (ITS#3698) + Fixed back-meta sizelimit bug (ITS#3720) Fixed syncrepl runqueue (ITS#3542) Fixed ACL val default style parsing crasher (ITS#3700) Build Environment diff --git a/servers/slapd/back-meta/search.c b/servers/slapd/back-meta/search.c index 77c63189f5..556f8c8cc0 100644 --- a/servers/slapd/back-meta/search.c +++ b/servers/slapd/back-meta/search.c @@ -85,7 +85,7 @@ meta_back_search( Operation *op, SlapReply *rs ) } if ( !meta_back_dobind( lc, op ) ) { - rs->sr_err = LDAP_OTHER; + rs->sr_err = LDAP_UNAVAILABLE; send_ldap_result( op, rs ); return -1; } @@ -315,14 +315,6 @@ new_candidate:; break; } - if ( op->ors_slimit > 0 - && rs->sr_nentries == op->ors_slimit ) { - rs->sr_err = LDAP_SIZELIMIT_EXCEEDED; - rs->sr_v2ref = v2refs; - send_ldap_result( op, rs ); - goto finish; - } - /* * FIXME: handle time limit as well? * Note that target servers are likely @@ -357,6 +349,17 @@ new_candidate:; goto finish; } else if ( rc == LDAP_RES_SEARCH_ENTRY ) { + if ( op->ors_slimit > 0 && rs->sr_nentries == op->ors_slimit ) + { + ldap_msgfree( res ); + res = NULL; + + rs->sr_err = LDAP_SIZELIMIT_EXCEEDED; + rs->sr_v2ref = v2refs; + send_ldap_result( op, rs ); + goto finish; + } + e = ldap_first_entry( lsc->ld, res ); meta_send_entry( op, rs, lc, i, e );