Commit da790e74 authored by Geoff Simmons's avatar Geoff Simmons

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

parent 60aceb98
......@@ -1446,3 +1446,42 @@ client c1 {
expect resp.http.Which-Shortest == "0"
expect resp.http.Which-Longest == "0"
} -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.hasprefix(req.http.No-Such-Header);
set resp.http.Nil = n.hasprefix("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\.hasprefix\(\): subject string is NULL$}
expect * = VCL_Error {^vmod selector error: n\.hasprefix\(\): 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
......@@ -419,15 +419,16 @@ vmod_set_hasprefix(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);
AN(set->origo);
if (subject == NULL) {
VERR(ctx, "%s.hasprefix(): subject string is NULL",
if (set->nmembers == 0) {
VERR(ctx, "%s.hasprefix(): no entries were added",
set->vcl_name);
return (0);
}
if (set->nmembers == 0) {
VERR(ctx, "%s.hasprefix(): no entries were added",
AN(set->origo);
if (subject == NULL) {
VERR(ctx, "%s.hasprefix(): subject string is NULL",
set->vcl_name);
return (0);
}
......
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