1. 20 Jan, 2021 2 commits
    • 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
    • Nils Goroll's avatar
      rename debug.fail_rollback() & debug.ok_rollback() · 03757a35
      Nils Goroll authored
      Though introduced for the purpose of failing upon rollback, they
      actually just call VRT_fail() from the PRIV_* fini callback and thus
      should be named accordingly.
      03757a35
  2. 19 Jan, 2021 1 commit
  3. 18 Jan, 2021 28 commits
  4. 17 Jan, 2021 1 commit
  5. 16 Jan, 2021 6 commits
  6. 15 Jan, 2021 2 commits