]> git.ipfire.org Git - thirdparty/openldap.git/commitdiff
import fix to sizelimit bug (ITS#3720)
authorPierangelo Masarati <ando@openldap.org>
Thu, 12 May 2005 22:38:16 +0000 (22:38 +0000)
committerPierangelo Masarati <ando@openldap.org>
Thu, 12 May 2005 22:38:16 +0000 (22:38 +0000)
CHANGES
servers/slapd/back-meta/search.c

diff --git a/CHANGES b/CHANGES
index 60381c97bcebe4b46b2770ea075f999d92c7cbc5..ee99ca1d6dfa85557f3daf20204473530cb0655f 100644 (file)
--- 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
index 77c63189f5e32ec576e955181087a0e7497fe368..556f8c8cc08a3794e56cb55667489be46fa3b881 100644 (file)
@@ -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 );