query() sample fetch function takes an optional argument string. During
configuration parsing, empty string must be ignored. It is especially
important when the sample is used with empty parenthesis. The argument is
optional and it is a list of options to configure the behavior of the sample
fetch. So it is logical to ignore empty strings.
This patch should fix the issue #2815. It must be backported to 3.1.
(cherry picked from commit
e1525e7b8fa15c59c1c6fc4063b5218d134b7afb)
Signed-off-by: Willy Tarreau <w@1wt.eu>
int val_query(struct arg *args, char **err_msg)
{
+ int val = 0;
+
if (args[0].type == ARGT_STOP)
return 1;
return 0;
}
- if (chunk_strcmp(&args[0].data.str, "with_qm") != 0) {
- memprintf(err_msg, "supported options are: 'with_qm'");
- return 0;
+ if (args[0].data.str.data != 0) {
+ if (chunk_strcmp(&args[0].data.str, "with_qm") != 0) {
+ memprintf(err_msg, "supported options are: 'with_qm'");
+ return 0;
+ }
+ val = 1;
}
chunk_destroy(&args[0].data.str);
args[0].type = ARGT_SINT;
- args[0].data.sint = 1;
+ args[0].data.sint = val;
return 1;
}