Commit 9aac765d authored by Geoff Simmons's avatar Geoff Simmons

Test error handling for vdp.arg(), and fix a typo in an error message.

parent e0e38a4a
......@@ -193,6 +193,73 @@ Ridiculus cOngue erat velit, nulla felis, viverra nOn tempOr cum nulla, quis qui
Enim per accumsan, augue id maecenas bibendum ullamcOrper in fermentum, platea fermentum. COnvallis pulvinar tOrtOr erOs sit cras nascetur, quam dis elit sed aliquam ac, nulla mOrbi suscipit egestas placerat pretium. Vehicula elementum duis, turpis wisi nascetur velit. Senectus aenean ipsum blandit, eleifend leO dOnec nunc, ut vel sagittis sed nam, ut aliquam quam aliquam at tellus. Vivamus dOnec liberO feugiat amet gravida, felis id aliquam nullam cOnsequat, aut eget suspendisse rutrum in. Orci tellus. A sapien scelerisque diam, Ornare laOreet lObOrtis blandit in. Aliquam at suscipit, id risus. LeO lacus quam mOllis erat mOrbi vel, ut adipiscing cillum dui. Elit bibendum tristique et nOn erOs liberO, egestas lectus turpis, quis gravida dOlOr vOlutpat, purus eu, cOnsectetuer pharetra per vehicula quam tellus.}
} -run
# An empty arg is legal.
varnish v1 -vcl {
import ${vmod_pipe};
backend b None;
sub vcl_init {
new cat = pipe.vdp(path="${cat}");
cat.arg("");
}
}
server s1 {
rxreq
txresp
} -start
# An NULL arg is illegal.
varnish v1 -vcl+backend {
import ${vmod_pipe};
sub vcl_init {
new cat = pipe.vdp(path="${cat}");
}
sub vcl_deliver {
cat.arg(req.http.Unset);
}
}
logexpect l1 -v v1 -g vxid -d 0 -q VCL_Error {
expect 0 * Begin {^req \d+ rxreq$}
expect * = VCL_Error {^vdp pipe failure: cat\.arg\(\): arg is NULL$}
expect * = End
} -start
client c1 {
txreq
rxresp -no_obj
} -run
logexpect l1 -wait
varnish v1 -vcl+backend {
import ${vmod_pipe};
sub vcl_init {
new cat = pipe.vdp(path="${cat}");
}
sub vcl_recv {
cat.arg("");
}
}
logexpect l1 -v v1 -g vxid -d 0 -q VCL_Error {
expect 0 * Begin {^req \d+ rxreq$}
expect * = VCL_Error {^vdp pipe failure: cat\.arg\(\): may only be called in vcl_init or vcl_deliver$}
expect * = End
} -start
client c1 {
txreq
rxresp -no_obj
} -run
logexpect l1 -wait
varnish v1 -vcl { backend b None; }
# Tests oject finalization, freeing argv
......@@ -200,5 +267,8 @@ varnish v1 -cli "vcl.discard vcl1"
varnish v1 -cli "vcl.discard vcl2"
varnish v1 -cli "vcl.discard vcl3"
varnish v1 -cli "vcl.discard vcl4"
varnish v1 -cli "vcl.discard vcl5"
varnish v1 -cli "vcl.discard vcl6"
varnish v1 -cli "vcl.discard vcl7"
delay 1
varnish v1 -cli "vcl.list"
......@@ -671,7 +671,7 @@ vmod_vdp_arg(VRT_CTX, struct VPFX(pipe_vdp) *obj, VCL_STRING arg)
CHECK_OBJ_NOTNULL(obj, PIPE_VDP_MAGIC);
if (!(ctx->method & (VCL_MET_INIT | VCL_MET_DELIVER))) {
VDPFAIL(ctx, "%s.arg(): may only be callled in vcl_init or "
VDPFAIL(ctx, "%s.arg(): may only be called in vcl_init or "
"vcl_deliver", obj->name);
return;
}
......
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