• Nils Goroll's avatar
    Clarify (struct vrt_ctx).handling for PRIVs · 4ccd356d
    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.
    4ccd356d
Name
Last commit
Last update
..
compat Loading commit data...
tbl Loading commit data...
vapi Loading commit data...
Makefile.am Loading commit data...
generate.py Loading commit data...
libvcc.h Loading commit data...
miniobj.h Loading commit data...
vas.h Loading commit data...
vav.h Loading commit data...
vbh.h Loading commit data...
vbm.h Loading commit data...
vbm_test.c Loading commit data...
vcc_interface.h Loading commit data...
vcli.h Loading commit data...
vcli_serve.h Loading commit data...
vcs.h Loading commit data...
vct.h Loading commit data...
vcurses.h Loading commit data...
vdef.h Loading commit data...
venc.h Loading commit data...
vend.h Loading commit data...
vev.h Loading commit data...
vfil.h Loading commit data...
vfl.h Loading commit data...
vin.h Loading commit data...
vjsn.h Loading commit data...
vlu.h Loading commit data...
vmb.h Loading commit data...
vnum.h Loading commit data...
vpf.h Loading commit data...
vqueue.h Loading commit data...
vre.h Loading commit data...
vrnd.h Loading commit data...
vrt.h Loading commit data...
vsa.h Loading commit data...
vsb.h Loading commit data...
vsc_priv.h Loading commit data...
vsha256.h Loading commit data...
vsl_priv.h Loading commit data...
vsm_priv.h Loading commit data...
vss.h Loading commit data...
vsub.h Loading commit data...
vtcp.h Loading commit data...
vtim.h Loading commit data...
vtree.h Loading commit data...
vus.h Loading commit data...
vut.h Loading commit data...
vut_options.h Loading commit data...