Do not access ctx->handling

use VRT_Fail() instead

This change should be improved by refactoring error handling
parent 074e8014
...@@ -648,22 +648,22 @@ vmod_set_integer(VRT_CTX, struct vmod_re2_set *set, VCL_INT n, VCL_ENUM selects) ...@@ -648,22 +648,22 @@ vmod_set_integer(VRT_CTX, struct vmod_re2_set *set, VCL_INT n, VCL_ENUM selects)
CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);
CHECK_OBJ_NOTNULL(set, VMOD_RE2_SET_MAGIC); CHECK_OBJ_NOTNULL(set, VMOD_RE2_SET_MAGIC);
if (set->integer == NULL) { if (set->integer == NULL) {
VERR(ctx, "%s.integer(%jd): No integers were set for %s", VRT_fail(ctx,
set->vcl_name, n, set->vcl_name); "%s.integer(%jd): No integers were set for %s",
*ctx->handling = VCL_RET_FAIL; set->vcl_name, n, set->vcl_name);
return (0); return (0);
} }
idx = get_match_idx(ctx, set, n, selects, "integer"); idx = get_match_idx(ctx, set, n, selects, "integer");
if (idx < 0) { if (idx < 0) {
*ctx->handling = VCL_RET_FAIL; VRT_fail(ctx, "See previous VCL_Error");
return (0); return (0);
} }
if (!vbit_test(set->added[INTEGER], idx)) { if (!vbit_test(set->added[INTEGER], idx)) {
AN(selects); AN(selects);
VERR(ctx, "%s.integer(%jd, %s): Integer %jd was not added", VRT_fail(ctx,
set->vcl_name, n, selects, idx + 1); "%s.integer(%jd, %s): Integer %d was not added",
*ctx->handling = VCL_RET_FAIL; set->vcl_name, n, selects, idx + 1);
return (0); return (0);
} }
return set->integer[idx]; return set->integer[idx];
......
...@@ -560,21 +560,25 @@ varnish v1 -vcl { ...@@ -560,21 +560,25 @@ varnish v1 -vcl {
logexpect l1 -v v1 -d 0 -g vxid -q "VCL_Error" { logexpect l1 -v v1 -d 0 -g vxid -q "VCL_Error" {
expect 0 * Begin req expect 0 * Begin req
expect * = VCL_Error {^vmod re2 error: i\.integer\(\) called without prior match$} expect * = VCL_Error {^vmod re2 error: i\.integer\(\) called without prior match$}
expect 0 = VCL_Error {^See previous VCL_Error}
expect 0 = ReqHeader "i-before-match: 0" expect 0 = ReqHeader "i-before-match: 0"
expect * = End expect * = End
expect 0 * Begin req expect 0 * Begin req
expect * = VCL_Error {^vmod re2 error: i\.integer\(0\): previous match was unsuccessful$} expect * = VCL_Error {^vmod re2 error: i\.integer\(0\): previous match was unsuccessful$}
expect 0 = VCL_Error {^See previous VCL_Error}
expect 0 = ReqHeader "i-fail-integer: 0" expect 0 = ReqHeader "i-fail-integer: 0"
expect * = End expect * = End
expect 0 * Begin req expect 0 * Begin req
expect * = VCL_Error {^vmod re2 error: i\.integer\(0\): 2 successful matches$} expect * = VCL_Error {^vmod re2 error: i\.integer\(0\): 2 successful matches$}
expect 0 = VCL_Error {^See previous VCL_Error}
expect 0 = ReqHeader "i-many-integer: 0" expect 0 = ReqHeader "i-many-integer: 0"
expect * = End expect * = End
expect 0 * Begin req expect 0 * Begin req
expect * = VCL_Error {^vmod re2 error: i\.integer\(3\): set has 2 patterns$} expect * = VCL_Error {^vmod re2 error: i\.integer\(3\): set has 2 patterns$}
expect 0 = VCL_Error {^See previous VCL_Error}
expect 0 = ReqHeader "i-outofrange: 0" expect 0 = ReqHeader "i-outofrange: 0"
expect * = End expect * = End
} -start } -start
......
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