Commit 60aceb98 authored by Geoff Simmons's avatar Geoff Simmons

Bugfix and verify some error cases for .match().

parent fc83088a
......@@ -815,3 +815,42 @@ logexpect l1 -v v1 -d 1 -g vxid -q "VCL_Error" {
expect * = VCL_Error {^vmod selector failure: t\.add\(\) may only be called in vcl_init$}
expect * = End
} -run
varnish v1 -vcl {
import ${vmod_selector};
backend b { .host = "${bad_ip}"; }
sub vcl_init {
new t = selector.set();
t.add("foo");
new n = selector.set();
}
sub vcl_recv {
return (synth(200));
}
sub vcl_synth {
set resp.http.Undef = t.match(req.http.No-Such-Header);
set resp.http.Nil = n.match("foo");
return (deliver);
}
}
logexpect l1 -v v1 -d 0 -g vxid -q "VCL_Error" {
expect 0 * Begin req
expect * = VCL_Error {^vmod selector error: t\.match\(\): subject string is NULL$}
expect * = VCL_Error {^vmod selector error: n\.match\(\): no entries were added$}
expect * = End
} -start
client c1 {
txreq
rxresp
expect resp.status == 200
expect resp.http.Undef == "false"
expect resp.http.Nil == "false"
} -run
logexpect l1 -wait
......@@ -364,16 +364,17 @@ vmod_set_match(VRT_CTX, struct vmod_selector_set *set, VCL_STRING subject)
CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);
CHECK_OBJ_NOTNULL(set, VMOD_SELECTOR_SET_MAGIC);
if (set->nmembers == 0) {
VERR(ctx, "%s.match(): no entries were added", set->vcl_name);
return (0);
}
AN(set->origo);
if (subject == NULL) {
VERR(ctx, "%s.match(): subject string is NULL", set->vcl_name);
return (0);
}
if (set->nmembers == 0) {
VERR(ctx, "%s.match(): no entries were added", set->vcl_name);
return (0);
}
members = set->members;
subj = subject;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment