diff --git a/doc/man/man5/slapd.conf.5 b/doc/man/man5/slapd.conf.5 index 5a1f3aaac555d44c492a1ba9a14aa9129221894b..147db4507e0a4b6db21a5e5fe2641b5f34182824 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 <integer> .TP -.B sizelimit size[.{soft|hard|unchecked}]=<integer> +.B sizelimit size[.{soft|hard|unchecked}]=<integer> [...] 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 <integer> .TP -.B timelimit time[.{soft|hard}]=<integer> +.B timelimit time[.{soft|hard}]=<integer> [...] 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 3547d7548d9e760fea32fc5e15ef3fdf0c0ed0cf..adef505afabefc4ac9c69c6ff64d7584c4a7f45c 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 <limit>\"" - " line.\n", - fname, lineno, cargv[1] )); + LDAP_LOG(( "config", LDAP_LEVEL_CRIT, + "%s: line %d: unable " + "to parse value \"%s\" " + "in \"sizelimit " + "<limit>\" line.\n", + fname, lineno, cargv[i] )); #else - Debug( LDAP_DEBUG_ANY, - "%s: line %d: unable to parse value \"%s\" in \"sizelimit <limit>\" line\n", - fname, lineno, cargv[1] ); + Debug( LDAP_DEBUG_ANY, + "%s: line %d: unable " + "to parse value \"%s\" " + "in \"sizelimit " + "<limit>\" 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 <limit>\"" - " line.\n", - fname, lineno, cargv[1] )); + LDAP_LOG(( "config", LDAP_LEVEL_CRIT, + "%s: line %d: unable " + "to parse value \"%s\" " + "in \"timelimit " + "<limit>\" line.\n", + fname, lineno, cargv[i] )); #else - Debug( LDAP_DEBUG_ANY, - "%s: line %d: unable to parse value \"%s\" in \"timelimit <limit>\" line\n", - fname, lineno, cargv[1] ); + Debug( LDAP_DEBUG_ANY, + "%s: line %d: unable " + "to parse value \"%s\" " + "in \"timelimit " + "<limit>\" line\n", + fname, lineno, cargv[i] ); #endif + } } /* set regex-based limits */