[master] f178ef285 local variable for (struct busyobj *)->fetch_objcore
Nils Goroll
nils.goroll at uplex.de
Sun Apr 12 14:17:06 UTC 2020
commit f178ef2855692bcc52bb8b8e4995180fea5d3848
Author: Nils Goroll <nils.goroll at uplex.de>
Date: Sun Apr 12 16:15:34 2020 +0200
local variable for (struct busyobj *)->fetch_objcore
e39e5e0dd790cb6e0575ec640dd88a2f0d1394d4 continued
diff --git a/bin/varnishd/cache/cache_fetch.c b/bin/varnishd/cache/cache_fetch.c
index 680eb55d0..5eedaa706 100644
--- a/bin/varnishd/cache/cache_fetch.c
+++ b/bin/varnishd/cache/cache_fetch.c
@@ -570,9 +570,12 @@ vbf_stp_fetchbody(struct worker *wrk, struct busyobj *bo)
static enum fetch_step
vbf_stp_fetch(struct worker *wrk, struct busyobj *bo)
{
+ struct objcore *oc;
+
CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
CHECK_OBJ_NOTNULL(bo, BUSYOBJ_MAGIC);
- CHECK_OBJ_NOTNULL(bo->fetch_objcore, OBJCORE_MAGIC);
+ oc = bo->fetch_objcore;
+ CHECK_OBJ_NOTNULL(oc, OBJCORE_MAGIC);
assert(wrk->handling == VCL_RET_DELIVER);
@@ -599,10 +602,10 @@ vbf_stp_fetch(struct worker *wrk, struct busyobj *bo)
return (F_STP_ERROR);
}
- if (bo->fetch_objcore->flags & OC_F_PRIVATE)
+ if (oc->flags & OC_F_PRIVATE)
AN(bo->uncacheable);
- bo->fetch_objcore->boc->len_so_far = 0;
+ oc->boc->len_so_far = 0;
if (VFP_Open(bo->vfc)) {
(void)VFP_Error(bo->vfc, "Fetch pipeline failed to open");
@@ -620,23 +623,23 @@ vbf_stp_fetch(struct worker *wrk, struct busyobj *bo)
#define OBJ_FLAG(U, l, v) \
if (bo->vfc->obj_flags & OF_##U) \
- ObjSetFlag(bo->wrk, bo->fetch_objcore, OF_##U, 1);
+ ObjSetFlag(bo->wrk, oc, OF_##U, 1);
#include "tbl/obj_attr.h"
- if (!(bo->fetch_objcore->flags & OC_F_HFM) &&
+ if (!(oc->flags & OC_F_HFM) &&
http_IsStatus(bo->beresp, 200) && (
http_GetHdr(bo->beresp, H_Last_Modified, NULL) ||
http_GetHdr(bo->beresp, H_ETag, NULL)))
- ObjSetFlag(bo->wrk, bo->fetch_objcore, OF_IMSCAND, 1);
+ ObjSetFlag(bo->wrk, oc, OF_IMSCAND, 1);
- assert(bo->fetch_objcore->boc->refcount >= 1);
+ assert(oc->boc->refcount >= 1);
- assert(bo->fetch_objcore->boc->state == BOS_REQ_DONE);
+ assert(oc->boc->state == BOS_REQ_DONE);
if (bo->do_stream) {
- ObjSetState(wrk, bo->fetch_objcore, BOS_PREP_STREAM);
- HSH_Unbusy(wrk, bo->fetch_objcore);
- ObjSetState(wrk, bo->fetch_objcore, BOS_STREAM);
+ ObjSetState(wrk, oc, BOS_PREP_STREAM);
+ HSH_Unbusy(wrk, oc);
+ ObjSetState(wrk, oc, BOS_STREAM);
}
VSLb(bo->vsl, SLT_Fetch_Body, "%u %s %s",
@@ -655,24 +658,30 @@ static enum fetch_step
vbf_stp_fetchend(struct worker *wrk, struct busyobj *bo)
{
+ struct objcore *oc;
+
+ CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
+ CHECK_OBJ_NOTNULL(bo, BUSYOBJ_MAGIC);
+ oc = bo->fetch_objcore;
+ CHECK_OBJ_NOTNULL(oc, OBJCORE_MAGIC);
+
AZ(bo->vfc->failed);
/* Recycle the backend connection before setting BOS_FINISHED to
give predictable backend reuse behavior for varnishtest */
vbf_cleanup(bo);
- AZ(ObjSetU64(wrk, bo->fetch_objcore, OA_LEN,
- bo->fetch_objcore->boc->len_so_far));
+ AZ(ObjSetU64(wrk, oc, OA_LEN, oc->boc->len_so_far));
if (bo->do_stream)
- assert(bo->fetch_objcore->boc->state == BOS_STREAM);
+ assert(oc->boc->state == BOS_STREAM);
else {
- assert(bo->fetch_objcore->boc->state == BOS_REQ_DONE);
- ObjSetState(wrk, bo->fetch_objcore, BOS_PREP_STREAM);
- HSH_Unbusy(wrk, bo->fetch_objcore);
+ assert(oc->boc->state == BOS_REQ_DONE);
+ ObjSetState(wrk, oc, BOS_PREP_STREAM);
+ HSH_Unbusy(wrk, oc);
}
- ObjSetState(wrk, bo->fetch_objcore, BOS_FINISHED);
+ ObjSetState(wrk, oc, BOS_FINISHED);
VSLb_ts_busyobj(bo, "BerespBody", W_TIM_real(wrk));
if (bo->stale_oc != NULL)
HSH_Kill(bo->stale_oc);
@@ -712,13 +721,16 @@ vbf_stp_condfetch(struct worker *wrk, struct busyobj *bo)
{
struct boc *stale_boc;
enum boc_state_e stale_state;
+ struct objcore *oc, *stale_oc;
CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
CHECK_OBJ_NOTNULL(bo, BUSYOBJ_MAGIC);
- CHECK_OBJ_NOTNULL(bo->fetch_objcore, OBJCORE_MAGIC);
- CHECK_OBJ_NOTNULL(bo->stale_oc, OBJCORE_MAGIC);
+ oc = bo->fetch_objcore;
+ CHECK_OBJ_NOTNULL(oc, OBJCORE_MAGIC);
+ stale_oc = bo->stale_oc;
+ CHECK_OBJ_NOTNULL(stale_oc, OBJCORE_MAGIC);
- stale_boc = HSH_RefBoc(bo->stale_oc);
+ stale_boc = HSH_RefBoc(stale_oc);
CHECK_OBJ_ORNULL(stale_boc, BOC_MAGIC);
if (stale_boc) {
/* Wait for the stale object to become fully fetched, so
@@ -731,9 +743,9 @@ vbf_stp_condfetch(struct worker *wrk, struct busyobj *bo)
* (this would be an issue for ie OA_GZIPBITS). */
VSLb(bo->vsl, SLT_Notice,
"vsl: Conditional fetch wait for streaming object");
- ObjWaitState(bo->stale_oc, BOS_FINISHED);
+ ObjWaitState(stale_oc, BOS_FINISHED);
stale_state = stale_boc->state;
- HSH_DerefBoc(bo->wrk, bo->stale_oc);
+ HSH_DerefBoc(bo->wrk, stale_oc);
stale_boc = NULL;
if (stale_state != BOS_FINISHED) {
(void)VFP_Error(bo->vfc, "Template object failed");
@@ -743,7 +755,7 @@ vbf_stp_condfetch(struct worker *wrk, struct busyobj *bo)
}
}
AZ(stale_boc);
- AZ(bo->stale_oc->flags & OC_F_FAILED);
+ AZ(stale_oc->flags & OC_F_FAILED);
if (vbf_beresp2obj(bo)) {
(void)VFP_Error(bo->vfc, "Could not get storage in vbf_stp_condfetch");
@@ -752,22 +764,21 @@ vbf_stp_condfetch(struct worker *wrk, struct busyobj *bo)
return (F_STP_FAIL);
}
- if (ObjHasAttr(bo->wrk, bo->stale_oc, OA_ESIDATA))
- AZ(ObjCopyAttr(bo->wrk, bo->fetch_objcore, bo->stale_oc,
- OA_ESIDATA));
+ if (ObjHasAttr(bo->wrk, stale_oc, OA_ESIDATA))
+ AZ(ObjCopyAttr(bo->wrk, oc, stale_oc, OA_ESIDATA));
- AZ(ObjCopyAttr(bo->wrk, bo->fetch_objcore, bo->stale_oc, OA_FLAGS));
- if (bo->fetch_objcore->flags & OC_F_HFM)
- ObjSetFlag(bo->wrk, bo->fetch_objcore, OF_IMSCAND, 0);
- AZ(ObjCopyAttr(bo->wrk, bo->fetch_objcore, bo->stale_oc, OA_GZIPBITS));
+ AZ(ObjCopyAttr(bo->wrk, oc, stale_oc, OA_FLAGS));
+ if (oc->flags & OC_F_HFM)
+ ObjSetFlag(bo->wrk, oc, OF_IMSCAND, 0);
+ AZ(ObjCopyAttr(bo->wrk, oc, stale_oc, OA_GZIPBITS));
if (bo->do_stream) {
- ObjSetState(wrk, bo->fetch_objcore, BOS_PREP_STREAM);
- HSH_Unbusy(wrk, bo->fetch_objcore);
- ObjSetState(wrk, bo->fetch_objcore, BOS_STREAM);
+ ObjSetState(wrk, oc, BOS_PREP_STREAM);
+ HSH_Unbusy(wrk, oc);
+ ObjSetState(wrk, oc, BOS_STREAM);
}
- if (ObjIterate(wrk, bo->stale_oc, bo, vbf_objiterator, 0))
+ if (ObjIterate(wrk, stale_oc, bo, vbf_objiterator, 0))
(void)VFP_Error(bo->vfc, "Template object failed");
if (bo->vfc->failed) {
More information about the varnish-commit
mailing list