MEDIUM: thread: Restric nbthread/thread-group(s) to very first global sections

nbhread, thead-group and thread-groups directives must only be defined in
very first global sections. It means no other section must have been parsed
before. Indeed, some parts of the configuratio depends on the value of these
settings and it is undefined to change them after.
This commit is contained in:
Christopher Faulet 2022-11-18 15:52:58 +01:00
parent 037e3f8735
commit 5534334f1f

View File

@ -1312,6 +1312,11 @@ static int cfg_parse_nbthread(char **args, int section_type, struct proxy *curpx
if (too_many_args(1, args, err, NULL))
return -1;
if (non_global_section_parsed == 1) {
memprintf(err, "'%s' not allowed if a non-global section was previously defined. This parameter must be declared in the first global section", args[0]);
return -1;
}
nbthread = strtol(args[1], &errptr, 10);
if (!*args[1] || *errptr) {
memprintf(err, "'%s' passed a missing or unparsable integer value in '%s'", args[0], args[1]);
@ -1349,6 +1354,11 @@ static int cfg_parse_thread_group(char **args, int section_type, struct proxy *c
long tnum, tend, tgroup;
int arg, tot;
if (non_global_section_parsed == 1) {
memprintf(err, "'%s' not allowed if a non-global section was previously defined. This parameter must be declared in the first global section", args[0]);
return -1;
}
tgroup = strtol(args[1], &errptr, 10);
if (!*args[1] || *errptr) {
memprintf(err, "'%s' passed a missing or unparsable integer value in '%s'", args[0], args[1]);
@ -1446,6 +1456,11 @@ static int cfg_parse_thread_groups(char **args, int section_type, struct proxy *
if (too_many_args(1, args, err, NULL))
return -1;
if (non_global_section_parsed == 1) {
memprintf(err, "'%s' not allowed if a non-global section was previously defined. This parameter must be declared in the first global section", args[0]);
return -1;
}
nbtgroups = strtol(args[1], &errptr, 10);
if (!*args[1] || *errptr) {
memprintf(err, "'%s' passed a missing or unparsable integer value in '%s'", args[0], args[1]);