BUG/MINOR: sample: Make the field converter compatible with -m found

Previously an expression like:

    path,field(2,/) -m found

always returned `true`.

Bug exists since the `field` converter exists. That is:
f399b0debf

The fix should be backported to 1.6+.
This commit is contained in:
Tim Duesterhus 2019-10-16 15:11:15 +02:00 committed by Christopher Faulet
parent d1d1e22945
commit 4381d26edc
2 changed files with 40 additions and 1 deletions

View File

@ -0,0 +1,39 @@
varnishtest "field converter Test"
feature ignore_unknown_macro
server s1 {
rxreq
txresp
} -repeat 3 -start
haproxy h1 -conf {
defaults
mode http
timeout connect 1s
timeout client 1s
timeout server 1s
frontend fe
bind "fd@${fe}"
#### requests
http-request set-var(txn.uri) path
http-response set-header Found %[var(txn.uri),field(3,/)] if { var(txn.uri),field(3,/) -m found }
default_backend be
backend be
server s1 ${s1_addr}:${s1_port}
} -start
client c1 -connect ${h1_fe_sock} {
txreq -url "/foo/bar/baz"
rxresp
expect resp.status == 200
expect resp.http.found == "bar"
txreq -url "/foo"
rxresp
expect resp.status == 200
expect resp.http.found == "<undef>"
} -run

View File

@ -2137,7 +2137,7 @@ static int sample_conv_field(const struct arg *arg_p, struct sample *smp, void *
/* Field not found */
if (field != arg_p[0].data.sint) {
smp->data.u.str.data = 0;
return 1;
return 0;
}
found:
smp->data.u.str.data = end - start;