From 50107d7fdf3e65a6fefb0233aaf5d91d3f7016a8 Mon Sep 17 00:00:00 2001 From: Walid Boudebouda Date: Sat, 14 Oct 2023 21:24:07 +0200 Subject: [PATCH] vrt_var: Generalize obj.* variables bindings --- bin/varnishd/cache/cache_vrt_var.c | 131 ++++++++++++++--------------- 1 file changed, 65 insertions(+), 66 deletions(-) diff --git a/bin/varnishd/cache/cache_vrt_var.c b/bin/varnishd/cache/cache_vrt_var.c index 8810fcc513d..1b65ed5fd0e 100644 --- a/bin/varnishd/cache/cache_vrt_var.c +++ b/bin/varnishd/cache/cache_vrt_var.c @@ -145,42 +145,6 @@ VRT_HDR_LR(beresp, reason, HTTP_HDR_REASON) VRT_STATUS_L(beresp) VRT_STATUS_R(beresp) -/*-------------------------------------------------------------------- - * Pulling things out of the packed object->http - */ - -VCL_INT -VRT_r_obj_status(VRT_CTX) -{ - CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); - CHECK_OBJ_NOTNULL(ctx->req, REQ_MAGIC); - CHECK_OBJ_NOTNULL(ctx->req->objcore, OBJCORE_MAGIC); - - return (HTTP_GetStatusPack(ctx->req->wrk, ctx->req->objcore)); -} - -VCL_STRING -VRT_r_obj_proto(VRT_CTX) -{ - CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); - CHECK_OBJ_NOTNULL(ctx->req, REQ_MAGIC); - CHECK_OBJ_NOTNULL(ctx->req->objcore, OBJCORE_MAGIC); - - return (HTTP_GetHdrPack(ctx->req->wrk, ctx->req->objcore, - H__Proto)); -} - -VCL_STRING -VRT_r_obj_reason(VRT_CTX) -{ - CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); - CHECK_OBJ_NOTNULL(ctx->req, REQ_MAGIC); - CHECK_OBJ_NOTNULL(ctx->req->objcore, OBJCORE_MAGIC); - - return (HTTP_GetHdrPack(ctx->req->wrk, ctx->req->objcore, - H__Reason)); -} - /*-------------------------------------------------------------------- * beresp bool-fields */ @@ -515,28 +479,73 @@ VRT_l_beresp_storage_hint(VRT_CTX, const char *str, VCL_STRANDS s) /*--------------------------------------------------------------------*/ -VCL_STEVEDORE -VRT_r_obj_storage(VRT_CTX) -{ - CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); - CHECK_OBJ_NOTNULL(ctx->req, REQ_MAGIC); - CHECK_OBJ_NOTNULL(ctx->req->objcore, OBJCORE_MAGIC); - AN(ctx->req->objcore->stobj); - CHECK_OBJ_NOTNULL(ctx->req->objcore->stobj->stevedore, - STEVEDORE_MAGIC); - return (ctx->req->objcore->stobj->stevedore); +#define VRT_OC_VAR_R(which, obj, obj_magic, field) \ +VCL_STEVEDORE \ +VRT_r_##which##_storage(VRT_CTX) \ +{ \ + CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); \ + CHECK_OBJ_NOTNULL(ctx->obj, obj_magic); \ + CHECK_OBJ_NOTNULL(ctx->obj->field, OBJCORE_MAGIC); \ + AN(ctx->obj->field->stobj); \ + CHECK_OBJ_NOTNULL(ctx->obj->field->stobj->stevedore, \ + STEVEDORE_MAGIC); \ + return (ctx->obj->field->stobj->stevedore); \ +} \ + \ +VCL_BOOL \ +VRT_r_##which##_can_esi(VRT_CTX) \ +{ \ + CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); \ + CHECK_OBJ_NOTNULL(ctx->obj, obj_magic); \ + CHECK_OBJ_NOTNULL(ctx->obj->field, OBJCORE_MAGIC); \ + return (ObjHasAttr(ctx->obj->wrk, ctx->obj->field, \ + OA_ESIDATA)); \ +} \ + \ +VCL_BOOL \ +VRT_r_##which##_uncacheable(VRT_CTX) \ +{ \ + CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); \ + CHECK_OBJ_NOTNULL(ctx->obj, obj_magic); \ + CHECK_OBJ_NOTNULL(ctx->obj->field, OBJCORE_MAGIC); \ + \ + return (ctx->obj->field->flags & OC_F_HFM ? 1 : 0); \ +} \ + \ +VCL_INT \ +VRT_r_##which##_status(VRT_CTX) \ +{ \ + CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); \ + CHECK_OBJ_NOTNULL(ctx->obj, obj_magic); \ + CHECK_OBJ_NOTNULL(ctx->obj->field, OBJCORE_MAGIC); \ + \ + return (HTTP_GetStatusPack(ctx->obj->wrk, \ + ctx->obj->field)); \ +} \ + \ +VCL_STRING \ +VRT_r_##which##_proto(VRT_CTX) \ +{ \ + CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); \ + CHECK_OBJ_NOTNULL(ctx->obj, obj_magic); \ + CHECK_OBJ_NOTNULL(ctx->obj->field, OBJCORE_MAGIC); \ + \ + return (HTTP_GetHdrPack(ctx->obj->wrk, ctx->obj->field, \ + H__Proto)); \ +} \ + \ +VCL_STRING \ +VRT_r_##which##_reason(VRT_CTX) \ +{ \ + CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); \ + CHECK_OBJ_NOTNULL(ctx->obj, obj_magic); \ + CHECK_OBJ_NOTNULL(ctx->obj->field, OBJCORE_MAGIC); \ + \ + return (HTTP_GetHdrPack(ctx->obj->wrk, ctx->obj->field, \ + H__Reason)); \ } -/*--------------------------------------------------------------------*/ - -VCL_BOOL -VRT_r_obj_can_esi(VRT_CTX) -{ - CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); - CHECK_OBJ_NOTNULL(ctx->req, REQ_MAGIC); - CHECK_OBJ_NOTNULL(ctx->req->objcore, OBJCORE_MAGIC); - return (ObjHasAttr(ctx->req->wrk, ctx->req->objcore, OA_ESIDATA)); -} +VRT_OC_VAR_R(obj, req, REQ_MAGIC, objcore); /*--------------------------------------------------------------------*/ @@ -974,16 +983,6 @@ VRT_r_obj_hits(VRT_CTX) return (ctx->req->is_hit ? ctx->req->objcore->hits : 0); } -VCL_BOOL -VRT_r_obj_uncacheable(VRT_CTX) -{ - - CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); - CHECK_OBJ_NOTNULL(ctx->req, REQ_MAGIC); - CHECK_OBJ_NOTNULL(ctx->req->objcore, OBJCORE_MAGIC); - return (ctx->req->objcore->flags & OC_F_HFM ? 1 : 0); -} - /*--------------------------------------------------------------------*/ VCL_BOOL