[master] 221d8066c vrt_var: Generalize obj.* variables bindings

Walid Boudebouda walid.boudebouda at gmail.com
Mon Sep 1 08:46:05 UTC 2025


commit 221d8066c43689737afac10ab8de8ed758dfee86
Author: Walid Boudebouda <walid.boudebouda at gmail.com>
Date:   Sat Oct 14 21:24:07 2023 +0200

    vrt_var: Generalize obj.* variables bindings

diff --git a/bin/varnishd/cache/cache_vrt_var.c b/bin/varnishd/cache/cache_vrt_var.c
index 3415ff83c..7b76b8f35 100644
--- a/bin/varnishd/cache/cache_vrt_var.c
+++ b/bin/varnishd/cache/cache_vrt_var.c
@@ -147,42 +147,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
  */
@@ -530,28 +494,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(obj, which, which_magic, field)		\
+VCL_STEVEDORE							\
+VRT_r_##obj##_storage(VRT_CTX)					\
+{								\
+	CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);			\
+	CHECK_OBJ_NOTNULL(ctx->which, which_magic);		\
+	CHECK_OBJ_NOTNULL(ctx->which->field, OBJCORE_MAGIC);	\
+	AN(ctx->which->field->stobj);				\
+	CHECK_OBJ_NOTNULL(ctx->which->field->stobj->stevedore,	\
+	    STEVEDORE_MAGIC);					\
+	return (ctx->which->field->stobj->stevedore);		\
+}								\
+								\
+VCL_BOOL							\
+VRT_r_##obj##_can_esi(VRT_CTX)					\
+{								\
+	CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);			\
+	CHECK_OBJ_NOTNULL(ctx->which, which_magic);		\
+	CHECK_OBJ_NOTNULL(ctx->which->field, OBJCORE_MAGIC);	\
+	return (ObjHasAttr(ctx->which->wrk, ctx->which->field,	\
+	    OA_ESIDATA));					\
+}								\
+								\
+VCL_BOOL							\
+VRT_r_##obj##_uncacheable(VRT_CTX)				\
+{								\
+	CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);			\
+	CHECK_OBJ_NOTNULL(ctx->which, which_magic);		\
+	CHECK_OBJ_NOTNULL(ctx->which->field, OBJCORE_MAGIC);	\
+								\
+	return (ctx->which->field->flags & OC_F_HFM ? 1 : 0);	\
+}								\
+								\
+VCL_INT								\
+VRT_r_##obj##_status(VRT_CTX)					\
+{								\
+	CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);			\
+	CHECK_OBJ_NOTNULL(ctx->which, which_magic);		\
+	CHECK_OBJ_NOTNULL(ctx->which->field, OBJCORE_MAGIC);	\
+								\
+	return (HTTP_GetStatusPack(ctx->which->wrk,		\
+	    ctx->which->field));				\
+}								\
+								\
+VCL_STRING							\
+VRT_r_##obj##_proto(VRT_CTX)					\
+{								\
+	CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);			\
+	CHECK_OBJ_NOTNULL(ctx->which, which_magic);		\
+	CHECK_OBJ_NOTNULL(ctx->which->field, OBJCORE_MAGIC);	\
+								\
+	return (HTTP_GetHdrPack(ctx->which->wrk,		\
+	    ctx->which->field, H__Proto));			\
+}								\
+								\
+VCL_STRING							\
+VRT_r_##obj##_reason(VRT_CTX)					\
+{								\
+	CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);			\
+	CHECK_OBJ_NOTNULL(ctx->which, which_magic);		\
+	CHECK_OBJ_NOTNULL(ctx->which->field, OBJCORE_MAGIC);	\
+								\
+	return (HTTP_GetHdrPack(ctx->which->wrk,		\
+	    ctx->which->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);
 
 /*--------------------------------------------------------------------*/
 
@@ -1000,16 +1009,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


More information about the varnish-commit mailing list