MINOR: sample: rename the "len" converter to "length"
This converter was recently introduced by commit ed0d24e ("MINOR:
sample: add len converter").
As found by Cyril, it causes an issue in "http-request capture"
statements. The non-obvious problem is that an old syntax for sample
expressions and converters used to support a series of words, each
representing a converter. This used to be how the "stick" directives
were created initially. By having a converter called "len", a
statement such as "http-request capture foo len 10" considers "len"
as a converter and not as the capture length.
This obsolete syntax needs to be changed in 1.9 but it's too late
for other versions. It's worth noting that the same problem can
happen if converters are registered on the fly using Lua. Other
language keywords that currently have to be avoided in converters
include "id", "table", "if", "unless".
diff --git a/doc/configuration.txt b/doc/configuration.txt
index a958712..87fc567 100644
--- a/doc/configuration.txt
+++ b/doc/configuration.txt
@@ -12941,7 +12941,7 @@
use_backend english if en
default_backend choose_your_language
-len
+length
Get the length of the string. This can only be placed after a string
sample fetch function or after a transformation keyword returning a string
type. The result is of type integer.
diff --git a/src/sample.c b/src/sample.c
index 213dd31..ed2aee0 100644
--- a/src/sample.c
+++ b/src/sample.c
@@ -1568,7 +1568,7 @@
return 1;
}
-static int sample_conv_strlen(const struct arg *arg_p, struct sample *smp, void *private)
+static int sample_conv_length(const struct arg *arg_p, struct sample *smp, void *private)
{
int i = smp->data.u.str.len;
smp->data.u.sint = i;
@@ -2796,7 +2796,7 @@
{ "base64", sample_conv_bin2base64,0, NULL, SMP_T_BIN, SMP_T_STR },
{ "upper", sample_conv_str2upper, 0, NULL, SMP_T_STR, SMP_T_STR },
{ "lower", sample_conv_str2lower, 0, NULL, SMP_T_STR, SMP_T_STR },
- { "len", sample_conv_strlen, 0, NULL, SMP_T_STR, SMP_T_SINT },
+ { "length", sample_conv_length, 0, NULL, SMP_T_STR, SMP_T_SINT },
{ "hex", sample_conv_bin2hex, 0, NULL, SMP_T_BIN, SMP_T_STR },
{ "hex2i", sample_conv_hex2int, 0, NULL, SMP_T_STR, SMP_T_SINT },
{ "ipmask", sample_conv_ipmask, ARG1(1,MSK4), NULL, SMP_T_IPV4, SMP_T_IPV4 },