From: Pierangelo Masarati Date: Sat, 4 Aug 2001 11:09:25 +0000 (+0000) Subject: allow multiple limits setting on one global/per backend config line X-Git-Tag: LDBM_PRE_GIANT_RWLOCK~1166 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=6a5b253bc62c9a9b36d785a790d2e751d98d22fe;p=openldap allow multiple limits setting on one global/per backend config line --- diff --git a/doc/man/man5/slapd.conf.5 b/doc/man/man5/slapd.conf.5 index 5a1f3aaac5..147db4507e 100644 --- a/doc/man/man5/slapd.conf.5 +++ b/doc/man/man5/slapd.conf.5 @@ -512,10 +512,11 @@ e.g. ldapi:// (and eventually IPSEC). It is not normally used. .TP .B sizelimit .TP -.B sizelimit size[.{soft|hard|unchecked}]= +.B sizelimit size[.{soft|hard|unchecked}]= [...] Specify the maximum number of entries to return from a search operation. The default size limit is 500. The second format allows a fine grain setting of the size limits. +Extra args can be added on the same line. See .BR limits for an explanation of the different flags. @@ -539,11 +540,12 @@ The default is 32. .TP .B timelimit .TP -.B timelimit time[.{soft|hard}]= +.B timelimit time[.{soft|hard}]= [...] Specify the maximum number of seconds (in real time) .B slapd will spend answering a search request. The default time limit is 3600. The second format allows a fine grain setting of the time limits. +Extra args can be added on the same line. See .BR limits for an explanation of the different flags. diff --git a/servers/slapd/config.c b/servers/slapd/config.c index 3547d7548d..adef505afa 100644 --- a/servers/slapd/config.c +++ b/servers/slapd/config.c @@ -694,7 +694,7 @@ read_config( const char *fname ) /* set size limit */ } else if ( strcasecmp( cargv[0], "sizelimit" ) == 0 ) { - int rc = 0; + int rc = 0, i; struct slap_limits_set *lim; if ( cargc < 2 ) { @@ -717,30 +717,36 @@ read_config( const char *fname ) lim = &be->be_def_limit; } - if ( strncasecmp( cargv[1], "size", 4 ) == 0 ) { - rc = parse_limit( cargv[1], lim ); - } else { - lim->lms_s_soft = atoi( cargv[1] ); - lim->lms_s_hard = 0; - } + for ( i = 1; i < cargc; i++ ) { + if ( strncasecmp( cargv[i], "size", 4 ) == 0 ) { + rc = parse_limit( cargv[i], lim ); + } else { + lim->lms_s_soft = atoi( cargv[i] ); + lim->lms_s_hard = 0; + } - if ( rc ) { + if ( rc ) { #ifdef NEW_LOGGING - LDAP_LOG(( "config", LDAP_LEVEL_CRIT, - "%s: line %d: unable to parse value" - " \"%s\" in \"sizelimit \"" - " line.\n", - fname, lineno, cargv[1] )); + LDAP_LOG(( "config", LDAP_LEVEL_CRIT, + "%s: line %d: unable " + "to parse value \"%s\" " + "in \"sizelimit " + "\" line.\n", + fname, lineno, cargv[i] )); #else - Debug( LDAP_DEBUG_ANY, - "%s: line %d: unable to parse value \"%s\" in \"sizelimit \" line\n", - fname, lineno, cargv[1] ); + Debug( LDAP_DEBUG_ANY, + "%s: line %d: unable " + "to parse value \"%s\" " + "in \"sizelimit " + "\" line\n", + fname, lineno, cargv[i] ); #endif + } } /* set time limit */ } else if ( strcasecmp( cargv[0], "timelimit" ) == 0 ) { - int rc = 0; + int rc = 0, i; struct slap_limits_set *lim; if ( cargc < 2 ) { @@ -763,25 +769,31 @@ read_config( const char *fname ) lim = &be->be_def_limit; } - if ( strncasecmp( cargv[1], "time", 4 ) == 0 ) { - rc = parse_limit( cargv[1], lim ); - } else { - lim->lms_t_soft = atoi( cargv[1] ); - lim->lms_t_hard = 0; - } + for ( i = 1; i < cargc; i++ ) { + if ( strncasecmp( cargv[i], "time", 4 ) == 0 ) { + rc = parse_limit( cargv[i], lim ); + } else { + lim->lms_t_soft = atoi( cargv[i] ); + lim->lms_t_hard = 0; + } - if ( rc ) { + if ( rc ) { #ifdef NEW_LOGGING - LDAP_LOG(( "config", LDAP_LEVEL_CRIT, - "%s: line %d: unable to parse value" - " \"%s\" in \"timelimit \"" - " line.\n", - fname, lineno, cargv[1] )); + LDAP_LOG(( "config", LDAP_LEVEL_CRIT, + "%s: line %d: unable " + "to parse value \"%s\" " + "in \"timelimit " + "\" line.\n", + fname, lineno, cargv[i] )); #else - Debug( LDAP_DEBUG_ANY, - "%s: line %d: unable to parse value \"%s\" in \"timelimit \" line\n", - fname, lineno, cargv[1] ); + Debug( LDAP_DEBUG_ANY, + "%s: line %d: unable " + "to parse value \"%s\" " + "in \"timelimit " + "\" line\n", + fname, lineno, cargv[i] ); #endif + } } /* set regex-based limits */