-
Nils Goroll authored
Ref 43d9e5fb : PRIV_* fini methods need to leave (struct vrt_ctx).handling alone, except that they might call VRT_fail(), see also 746384b2 Thus we add assertions that handling be either 0 or VCL_RET_FAIL outside the FSM. To be able to do so, we need to change VCL_RET_OK into 0 when vcl_init{} has returned successfully. The vcl_fini{} case is slightly more complicated: By design, only "ok" (VCL_RET_OK) is allowed, but VRT_fail() also added VCL_RET_FAIL, so we de-facto get a "fail" return if any vmod code called VRT_fail(). Because PRIV_* handling happens from VCC generated code via VGC_Discard(), we need to check and change (struct vrt_ctx).handling right after calling vcl_fini{} / VGC_function_vcl_fini() from VGC_Discard(). This is VPI_vcl_fini(). Implementation note: I also considered void VPI_vcl_fini(VRT_CTX, vcl_func_f fini_sub), having VPI_vcl_fini call the fini_sub, but that stirred up includes of VPI where vcl.h is not included.
Name |
Last commit
|
Last update |
---|---|---|
.. | ||
cache | ||
common | ||
fuzzers | ||
hash | ||
hpack | ||
http1 | ||
http2 | ||
mgt | ||
proxy | ||
storage | ||
waiter | ||
Makefile.am | ||
VSC_lck.vsc | ||
VSC_main.vsc | ||
VSC_mempool.vsc | ||
VSC_mgt.vsc | ||
VSC_sma.vsc | ||
VSC_smf.vsc | ||
VSC_smu.vsc | ||
VSC_vbe.vsc | ||
builtin.vcl | ||
flint.lnt | ||
flint.sh | ||
vclflint.lnt | ||
vclflint.sh |