]> git.sur5r.net Git - openldap/commitdiff
cleanup limits for internal searches...
authorPierangelo Masarati <ando@openldap.org>
Sat, 19 Jun 2004 17:07:36 +0000 (17:07 +0000)
committerPierangelo Masarati <ando@openldap.org>
Sat, 19 Jun 2004 17:07:36 +0000 (17:07 +0000)
servers/slapd/limits.c
servers/slapd/syncrepl.c

index 467aec519726707cd24806b5a0aeca0cb87fbf1f..3ea48772842a2a4e0aef6e6b78060f2e2d7f84b4 100644 (file)
@@ -993,11 +993,18 @@ limits_check( Operation *op, SlapReply *rs )
 {
        assert( op );
        assert( rs );
-       /* protocol only allows 0..maxInt */
-       assert( op->ors_tlimit >= 0 );
-       assert( op->ors_slimit >= 0 );
        /* FIXME: should this be always true? */
        assert( op->o_tag == LDAP_REQ_SEARCH);
+
+       /* protocol only allows 0..maxInt; internal searches
+        * may use SLAP_NO_LIMIT ( = -1 ) to indicate no limits... */
+       if ( op->ors_tlimit == SLAP_NO_LIMIT && op->ors_slimit == SLAP_NO_LIMIT ) {
+               return 0;
+       }
+
+       /* fail when at least one is set to a negative value... */
+       assert( op->ors_tlimit >= 0 );
+       assert( op->ors_slimit >= 0 );
        
        /* allow root to set no limit */
        if ( be_isroot( op ) ) {
index 42a3456b89277a20bc615e3aab015c386778c043..723bf05f77fac8f333dbaa345a9f2dfba49a1dc5 100644 (file)
@@ -1142,6 +1142,9 @@ syncrepl_entry(
        op->o_req_dn = si->si_base;
        op->o_req_ndn = si->si_base;
 
+       op->ors_tlimit = 0;
+       op->ors_slimit = 0;
+
        /* set callback function */
        op->o_callback = &cb;
        cb.sc_response = dn_callback;