arg++;
if ( strcasecmp( arg, "none" ) == 0 ) {
limit->lms_t_soft = -1;
+
} else {
char *next = NULL;
arg += STRLENOF( "soft=" );
if ( strcasecmp( arg, "none" ) == 0 ) {
limit->lms_s_soft = -1;
+
} else {
char *next = NULL;
int soft = strtol( arg, &next, 10 );
arg++;
if ( strcasecmp( arg, "none" ) == 0 ) {
limit->lms_s_soft = -1;
+
} else {
char *next = NULL;
rs->sr_err = LDAP_SUCCESS;
rs->sr_text = NULL;
return -1;
+
+ } else if ( op->ors_limit->lms_s_pr_total == -1 ) {
+ slimit = -1;
} else {
/* if no limit is required, use soft limit */
/* if the limit is set, check that it does not violate any limit */
if ( op->ors_slimit > 0 ) {
slimit2 = op->ors_slimit;
- if ( op->ors_limit->lms_s_pr_total > 0 ) {
- if ( op->ors_slimit > op->ors_limit->lms_s_pr_total ) {
- slimit2 = -2;
- }
-
- } else if ( op->ors_limit->lms_s_hard > 0 ) {
- if ( op->ors_slimit > op->ors_limit->lms_s_hard ) {
- slimit2 = -2;
- }
-
- } else if ( op->ors_limit->lms_s_soft > 0 ) {
- if ( op->ors_slimit > op->ors_limit->lms_s_soft ) {
- slimit2 = -2;
- }
- }
-
- if ( slimit2 == -2 ) {
+ if ( op->ors_slimit > op->ors_limit->lms_s_pr_total ) {
rs->sr_err = LDAP_ADMINLIMIT_EXCEEDED;
send_ldap_result( op, rs );
rs->sr_err = LDAP_SUCCESS;
}
} else {
- if ( op->ors_limit->lms_s_pr_total > 0 ) {
- slimit2 = op->ors_limit->lms_s_pr_total;
-
- } else if ( op->ors_limit->lms_s_hard > 0 ) {
- slimit2 = op->ors_limit->lms_s_hard;
-
- } else if ( op->ors_limit->lms_s_soft > 0 ) {
- slimit2 = op->ors_limit->lms_s_soft;
- }
+ slimit2 = op->ors_limit->lms_s_pr_total;
}
total = slimit2 - op->o_pagedresults_state.ps_count;
send_ldap_result( op, rs );
rs->sr_err = LDAP_SUCCESS;
return -1;
+
} else {
op->ors_slimit = slimit;
}