diff --git a/bin/varnishd/cache/cache_vrt_var.c b/bin/varnishd/cache/cache_vrt_var.c index 7e88fd585bb..1efd9de8f34 100644 --- a/bin/varnishd/cache/cache_vrt_var.c +++ b/bin/varnishd/cache/cache_vrt_var.c @@ -145,77 +145,43 @@ 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)); -} - -/*-------------------------------------------------------------------- - * stale_oc fields - */ - -VCL_INT -VRT_r_obj_stale_status(VRT_CTX) -{ - CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); - CHECK_OBJ_NOTNULL(ctx->bo, BUSYOBJ_MAGIC); - CHECK_OBJ_NOTNULL(ctx->bo->stale_oc, OBJCORE_MAGIC); - - return HTTP_GetStatusPack(ctx->bo->wrk ,ctx->bo->stale_oc); -} - -VCL_STRING -VRT_r_obj_stale_proto(VRT_CTX) -{ - CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); - CHECK_OBJ_NOTNULL(ctx->bo, BUSYOBJ_MAGIC); - CHECK_OBJ_NOTNULL(ctx->bo->stale_oc, OBJCORE_MAGIC); - - return (HTTP_GetHdrPack(ctx->bo->wrk, ctx->bo->stale_oc, - H__Proto)); +#define VRT_OC_SPR_R(which, obj, field) \ +VCL_INT \ +VRT_r_##which##_status(VRT_CTX) \ +{ \ + CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); \ + AN(ctx->obj); \ + AN(ctx->obj->field); \ + \ + return (HTTP_GetStatusPack(ctx->obj->wrk, \ + ctx->obj->field)); \ +} \ + \ +VCL_STRING \ +VRT_r_##which##_proto(VRT_CTX) \ +{ \ + CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); \ + AN(ctx->obj); \ + AN(ctx->obj->field); \ + \ + 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); \ + AN(ctx->obj); \ + AN(ctx->obj->field); \ + \ + return (HTTP_GetHdrPack(ctx->obj->wrk, ctx->obj->field, \ + H__Reason)); \ } -VCL_STRING -VRT_r_obj_stale_reason(VRT_CTX) -{ - CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); - CHECK_OBJ_NOTNULL(ctx->bo, BUSYOBJ_MAGIC); - CHECK_OBJ_NOTNULL(ctx->bo->stale_oc, OBJCORE_MAGIC); - - return (HTTP_GetHdrPack(ctx->bo->wrk, ctx->bo->stale_oc, - H__Reason)); -} +VRT_OC_SPR_R(obj, req, objcore); +VRT_OC_SPR_R(obj_stale, bo, stale_oc); /*-------------------------------------------------------------------- * beresp bool-fields @@ -551,57 +517,41 @@ 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); -} - -/*--------------------------------------------------------------------*/ - -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)); -} - -/*--------------------------------------------------------------------*/ - -VCL_STEVEDORE -VRT_r_obj_stale_storage(VRT_CTX) -{ - CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); - CHECK_OBJ_NOTNULL(ctx->bo, BUSYOBJ_MAGIC); - CHECK_OBJ_NOTNULL(ctx->bo->stale_oc, OBJCORE_MAGIC); - AN(ctx->bo->stale_oc->stobj); - CHECK_OBJ_NOTNULL(ctx->bo->stale_oc->stobj->stevedore, - STEVEDORE_MAGIC); - - return (ctx->bo->stale_oc->stobj->stevedore); -} - -/*--------------------------------------------------------------------*/ - -VCL_BOOL -VRT_r_obj_stale_can_esi(VRT_CTX) -{ - CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); - CHECK_OBJ_NOTNULL(ctx->bo, BUSYOBJ_MAGIC); - CHECK_OBJ_NOTNULL(ctx->bo->stale_oc, OBJCORE_MAGIC); - - return (ObjHasAttr(ctx->bo->wrk, ctx->bo->stale_oc, OA_ESIDATA)); +#define VRT_OC_SCU_R(which, obj, field) \ +VCL_STEVEDORE \ +VRT_r_##which##_storage(VRT_CTX) \ +{ \ + CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); \ + AN(ctx->obj); \ + AN(ctx->obj->field); \ + 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); \ + AN(ctx->obj); \ + AN(ctx->obj->field); \ + 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); \ + AN(ctx->obj); \ + AN(ctx->obj->field); \ + \ + return (ctx->obj->field->flags & OC_F_HFM ? 1 : 0); \ } -/*--------------------------------------------------------------------*/ +VRT_OC_SCU_R(obj, req, objcore); +VRT_OC_SCU_R(obj_stale, bo, stale_oc); #define REQ_VAR_L(nm, elem, type, extra) \ \ @@ -1043,18 +993,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_INT VRT_r_obj_stale_hits(VRT_CTX) { @@ -1065,16 +1003,6 @@ VRT_r_obj_stale_hits(VRT_CTX) return (ctx->bo->stale_oc->hits); } -VCL_BOOL -VRT_r_obj_stale_uncacheable(VRT_CTX) -{ - CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); - CHECK_OBJ_NOTNULL(ctx->bo, BUSYOBJ_MAGIC); - CHECK_OBJ_NOTNULL(ctx->bo->stale_oc, OBJCORE_MAGIC); - - return (ctx->bo->stale_oc->flags & OC_F_HFM ? 1 : 0); -} - /*--------------------------------------------------------------------*/ VCL_BOOL