From 4919363fa0dd679a96625965c3cc0e266f2d0820 Mon Sep 17 00:00:00 2001 From: Pierangelo Masarati Date: Fri, 3 Aug 2001 17:25:39 +0000 Subject: [PATCH] more intuitive special limits configuration --- doc/man/man5/slapd.conf.5 | 11 +++++++---- servers/slapd/limits.c | 24 ++++++++++++++++++++---- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/doc/man/man5/slapd.conf.5 b/doc/man/man5/slapd.conf.5 index 3808a60cf6..5a1f3aaac5 100644 --- a/doc/man/man5/slapd.conf.5 +++ b/doc/man/man5/slapd.conf.5 @@ -183,8 +183,9 @@ limit is used; if the requested time limit exceedes the limit, an "Unwilling to perform" is returned. If the .BR hard -limit is set to zero, the soft limit is used in either case; -if it is set to -1, no hard limit is enforced. +limit is set to 0 or to the keyword "soft", the soft limit is used +in either case; if it is set to -1 or to the keyword "none", +no hard limit is enforced. Explicit requests for time limits smaller or equal to the .BR hard limit are honored. @@ -207,8 +208,9 @@ limit is used; if the requested size limit exceedes the limit, an "Unwilling to perform" is returned. If the .BR hard -limit is set to zero, the soft limit is used in either case; -if it is set to -1, no hard limit is enforced. +limit is set to 0 or to the keyword "soft", the soft limit is used +in either case; if it is set to -1 or to the keyword "none", +no hard limit is enforced. Explicit requests for size limits smaller or equal to the .BR hard limit are honored. @@ -219,6 +221,7 @@ to examine. If the selected candidates exceed the .BR unchecked limit, the search will abort with "Unwilling to perform". +If it is set to -1 or to the keyword "none", no limit is applied (the default). If no flag is set, the value is assigned to the .BR soft limit, and the diff --git a/servers/slapd/limits.c b/servers/slapd/limits.c index 5e27a2d832..614bd2cee7 100644 --- a/servers/slapd/limits.c +++ b/servers/slapd/limits.c @@ -47,7 +47,7 @@ get_limits( break; case SLAP_LIMITS_REGEX: - if ( regexec( &lm[0]->lm_dn_regex, ndn, 0, NULL, 0) == 0 ) { + if ( regexec( &lm[0]->lm_dn_regex, ndn, 0, NULL, 0 ) == 0 ) { *limit = &lm[0]->lm_limits; return( 0 ); } @@ -264,7 +264,13 @@ parse_limit( return( 1 ); } arg++; - limit->lms_t_hard = atoi( arg ); + if ( strcasecmp( arg, "soft" ) == 0 ) { + limit->lms_t_hard = 0; + } else if ( strcasecmp( arg, "none" ) == 0 ) { + limit->lms_t_hard = -1; + } else { + limit->lms_t_hard = atoi( arg ); + } } else { return( 1 ); @@ -297,7 +303,13 @@ parse_limit( return( 1 ); } arg++; - limit->lms_s_hard = atoi( arg ); + if ( strcasecmp( arg, "soft" ) == 0 ) { + limit->lms_s_hard = 0; + } else if ( strcasecmp( arg, "none" ) == 0 ) { + limit->lms_s_hard = -1; + } else { + limit->lms_s_hard = atoi( arg ); + } } else if ( strncasecmp( arg, "unchecked", 9 ) == 0 ) { arg += 9; @@ -305,7 +317,11 @@ parse_limit( return( 1 ); } arg++; - limit->lms_s_unchecked = atoi( arg ); + if ( strcasecmp( arg, "none" ) == 0 ) { + limit->lms_s_unchecked = -1; + } else { + limit->lms_s_unchecked = atoi( arg ); + } } else { return( 1 ); -- 2.39.5