[master] 6c14864 move obj and objcore from worker to req
Poul-Henning Kamp
phk at varnish-cache.org
Mon Dec 26 11:03:07 CET 2011
commit 6c148642883f466b15281ad8799ecbce23c3954b
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date: Mon Dec 26 10:02:54 2011 +0000
move obj and objcore from worker to req
diff --git a/bin/varnishd/cache/cache.h b/bin/varnishd/cache/cache.h
index c919b32..71b2c83 100644
--- a/bin/varnishd/cache/cache.h
+++ b/bin/varnishd/cache/cache.h
@@ -329,8 +329,6 @@ struct worker {
struct ws ws[1];
- struct object *obj;
- struct objcore *objcore;
struct busyobj *busyobj;
/* This is only here so VRT can find it */
@@ -622,6 +620,8 @@ struct req {
struct http *resp;
struct ws ws[1];
+ struct object *obj;
+ struct objcore *objcore;
};
/*--------------------------------------------------------------------*/
diff --git a/bin/varnishd/cache/cache_backend.c b/bin/varnishd/cache/cache_backend.c
index 24aedb4..b683300 100644
--- a/bin/varnishd/cache/cache_backend.c
+++ b/bin/varnishd/cache/cache_backend.c
@@ -227,7 +227,7 @@ vbe_NewConn(void)
/*--------------------------------------------------------------------
* It evaluates if a backend is healthy _for_a_specific_object_.
- * That means that it relies on sp->wrk->objcore->objhead. This is mainly for
+ * That means that it relies on sp->req->objcore->objhead. This is mainly for
* saint-mode, but also takes backend->healthy into account. If
* cache_param->saintmode_threshold is 0, this is basically just a test of
* backend->healthy.
@@ -274,11 +274,11 @@ vbe_Healthy(const struct vdi_simple *vs, const struct sess *sp)
if (threshold == 0)
return (1);
- if (sp->wrk->objcore == NULL)
+ if (sp->req->objcore == NULL)
return (1);
now = sp->t_req;
- target = (uintptr_t)(sp->wrk->objcore->objhead);
+ target = (uintptr_t)(sp->req->objcore->objhead);
old = NULL;
retval = 1;
diff --git a/bin/varnishd/cache/cache_center.c b/bin/varnishd/cache/cache_center.c
index 298b7b4..8ee4470 100644
--- a/bin/varnishd/cache/cache_center.c
+++ b/bin/varnishd/cache/cache_center.c
@@ -115,7 +115,7 @@ cnt_wait(struct sess *sp, struct worker *wrk, struct req *req)
}
AZ(req->vcl);
- AZ(wrk->obj);
+ AZ(req->obj);
AZ(req->esi_level);
assert(req->xid == 0);
req->t_resp = NAN;
@@ -213,13 +213,13 @@ cnt_prepresp(struct sess *sp, struct worker *wrk, struct req *req)
CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
CHECK_OBJ_NOTNULL(req, REQ_MAGIC);
- CHECK_OBJ_NOTNULL(wrk->obj, OBJECT_MAGIC);
+ CHECK_OBJ_NOTNULL(req->obj, OBJECT_MAGIC);
CHECK_OBJ_NOTNULL(req->vcl, VCL_CONF_MAGIC);
if (wrk->busyobj != NULL) {
CHECK_OBJ_NOTNULL(wrk->busyobj, BUSYOBJ_MAGIC);
AN(wrk->busyobj->do_stream);
- AssertObjCorePassOrBusy(wrk->obj->objcore);
+ AssertObjCorePassOrBusy(req->obj->objcore);
}
wrk->res_mode = 0;
@@ -233,7 +233,7 @@ cnt_prepresp(struct sess *sp, struct worker *wrk, struct req *req)
!wrk->busyobj->do_gzip && !wrk->busyobj->do_gunzip)
wrk->res_mode |= RES_LEN;
- if (!req->disable_esi && wrk->obj->esidata != NULL) {
+ if (!req->disable_esi && req->obj->esidata != NULL) {
/* In ESI mode, we don't know the aggregate length */
wrk->res_mode &= ~RES_LEN;
wrk->res_mode |= RES_ESI;
@@ -244,7 +244,7 @@ cnt_prepresp(struct sess *sp, struct worker *wrk, struct req *req)
wrk->res_mode |= RES_ESI_CHILD;
}
- if (cache_param->http_gzip_support && wrk->obj->gziped &&
+ if (cache_param->http_gzip_support && req->obj->gziped &&
!RFC2616_Req_Gzip(sp)) {
/*
* We don't know what it uncompresses to
@@ -255,7 +255,7 @@ cnt_prepresp(struct sess *sp, struct worker *wrk, struct req *req)
}
if (!(wrk->res_mode & (RES_LEN|RES_CHUNKED|RES_EOF))) {
- if (wrk->obj->len == 0 &&
+ if (req->obj->len == 0 &&
(wrk->busyobj == NULL || !wrk->busyobj->do_stream))
/*
* If the object is empty, neither ESI nor GUNZIP
@@ -273,12 +273,12 @@ cnt_prepresp(struct sess *sp, struct worker *wrk, struct req *req)
}
req->t_resp = W_TIM_real(wrk);
- if (wrk->obj->objcore != NULL) {
- if ((req->t_resp - wrk->obj->last_lru) >
+ if (req->obj->objcore != NULL) {
+ if ((req->t_resp - req->obj->last_lru) >
cache_param->lru_timeout &&
- EXP_Touch(wrk->obj->objcore))
- wrk->obj->last_lru = req->t_resp;
- wrk->obj->last_use = req->t_resp; /* XXX: locking ? */
+ EXP_Touch(req->obj->objcore))
+ req->obj->last_lru = req->t_resp;
+ req->obj->last_use = req->t_resp; /* XXX: locking ? */
}
http_Setup(req->resp, req->ws);
RES_BuildHttp(sp);
@@ -295,9 +295,9 @@ cnt_prepresp(struct sess *sp, struct worker *wrk, struct req *req)
HSH_Drop(wrk);
VBO_DerefBusyObj(wrk, &wrk->busyobj);
} else {
- (void)HSH_Deref(wrk, NULL, &wrk->obj);
+ (void)HSH_Deref(wrk, NULL, &req->obj);
}
- AZ(wrk->obj);
+ AZ(req->obj);
req->restarts++;
req->director = NULL;
http_Setup(req->resp, NULL);
@@ -307,7 +307,7 @@ cnt_prepresp(struct sess *sp, struct worker *wrk, struct req *req)
WRONG("Illegal action in vcl_deliver{}");
}
if (wrk->busyobj != NULL && wrk->busyobj->do_stream) {
- AssertObjCorePassOrBusy(wrk->obj->objcore);
+ AssertObjCorePassOrBusy(req->obj->objcore);
sp->step = STP_STREAMBODY;
} else {
sp->step = STP_DELIVER;
@@ -345,7 +345,7 @@ cnt_deliver(struct sess *sp, struct worker *wrk, struct req *req)
assert(WRW_IsReleased(wrk));
assert(wrk->wrw.ciov == wrk->wrw.siov);
- (void)HSH_Deref(wrk, NULL, &wrk->obj);
+ (void)HSH_Deref(wrk, NULL, &req->obj);
http_Setup(req->resp, NULL);
sp->step = STP_DONE;
return (0);
@@ -376,7 +376,7 @@ cnt_done(struct sess *sp, struct worker *wrk, struct req *req)
CHECK_OBJ_NOTNULL(req, REQ_MAGIC);
CHECK_OBJ_ORNULL(req->vcl, VCL_CONF_MAGIC);
- AZ(wrk->obj);
+ AZ(req->obj);
AZ(wrk->busyobj);
req->director = NULL;
req->restarts = 0;
@@ -484,17 +484,17 @@ cnt_error(struct sess *sp, struct worker *wrk, struct req *req)
CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
CHECK_OBJ_NOTNULL(req, REQ_MAGIC);
- if (wrk->obj == NULL) {
+ if (req->obj == NULL) {
HSH_Prealloc(sp);
AZ(wrk->busyobj);
wrk->busyobj = VBO_GetBusyObj(wrk);
- wrk->obj = STV_NewObject(wrk, NULL, cache_param->http_resp_size,
+ req->obj = STV_NewObject(wrk, NULL, cache_param->http_resp_size,
(uint16_t)cache_param->http_max_hdr);
- if (wrk->obj == NULL)
- wrk->obj = STV_NewObject(wrk, TRANSIENT_STORAGE,
+ if (req->obj == NULL)
+ req->obj = STV_NewObject(wrk, TRANSIENT_STORAGE,
cache_param->http_resp_size,
(uint16_t)cache_param->http_max_hdr);
- if (wrk->obj == NULL) {
+ if (req->obj == NULL) {
req->doclose = "Out of objects";
req->director = NULL;
http_Setup(wrk->busyobj->beresp, NULL);
@@ -502,15 +502,15 @@ cnt_error(struct sess *sp, struct worker *wrk, struct req *req)
sp->step = STP_DONE;
return(0);
}
- AN(wrk->obj);
- wrk->obj->xid = req->xid;
- wrk->obj->exp.entered = sp->t_req;
+ AN(req->obj);
+ req->obj->xid = req->xid;
+ req->obj->exp.entered = sp->t_req;
} else {
CHECK_OBJ_NOTNULL(wrk->busyobj, BUSYOBJ_MAGIC);
/* XXX: Null the headers ? */
}
- CHECK_OBJ_NOTNULL(wrk->obj, OBJECT_MAGIC);
- h = wrk->obj->http;
+ CHECK_OBJ_NOTNULL(req->obj, OBJECT_MAGIC);
+ h = req->obj->http;
if (req->err_code < 100 || req->err_code > 999)
req->err_code = 501;
@@ -643,7 +643,7 @@ cnt_fetch(struct sess *sp, struct worker *wrk, struct req *req)
RFC2616_Ttl(sp);
/* pass from vclrecv{} has negative TTL */
- if (wrk->objcore == NULL)
+ if (req->objcore == NULL)
wrk->busyobj->exp.ttl = -1.;
AZ(wrk->busyobj->do_esi);
@@ -652,12 +652,12 @@ cnt_fetch(struct sess *sp, struct worker *wrk, struct req *req)
switch (req->handling) {
case VCL_RET_HIT_FOR_PASS:
- if (wrk->objcore != NULL)
- wrk->objcore->flags |= OC_F_PASS;
+ if (req->objcore != NULL)
+ req->objcore->flags |= OC_F_PASS;
sp->step = STP_FETCHBODY;
return (0);
case VCL_RET_DELIVER:
- AssertObjCorePassOrBusy(wrk->objcore);
+ AssertObjCorePassOrBusy(req->objcore);
sp->step = STP_FETCHBODY;
return (0);
default:
@@ -671,10 +671,10 @@ cnt_fetch(struct sess *sp, struct worker *wrk, struct req *req)
/* Clean up partial fetch */
AZ(wrk->busyobj->vbc);
- if (wrk->objcore != NULL) {
- CHECK_OBJ_NOTNULL(wrk->objcore, OBJCORE_MAGIC);
- AZ(HSH_Deref(wrk, wrk->objcore, NULL));
- wrk->objcore = NULL;
+ if (req->objcore != NULL) {
+ CHECK_OBJ_NOTNULL(req->objcore, OBJCORE_MAGIC);
+ AZ(HSH_Deref(wrk, req->objcore, NULL));
+ req->objcore = NULL;
}
VBO_DerefBusyObj(wrk, &wrk->busyobj);
req->director = NULL;
@@ -733,7 +733,7 @@ cnt_fetchbody(struct sess *sp, struct worker *wrk, struct req *req)
assert(req->handling == VCL_RET_HIT_FOR_PASS ||
req->handling == VCL_RET_DELIVER);
- if (wrk->objcore == NULL) {
+ if (req->objcore == NULL) {
/* This is a pass from vcl_recv */
pass = 1;
/* VCL may have fiddled this, but that doesn't help */
@@ -812,8 +812,8 @@ cnt_fetchbody(struct sess *sp, struct worker *wrk, struct req *req)
pass ? HTTPH_R_PASS : HTTPH_A_INS, &nhttp);
/* Create Vary instructions */
- if (wrk->objcore != NULL) {
- CHECK_OBJ_NOTNULL(wrk->objcore, OBJCORE_MAGIC);
+ if (req->objcore != NULL) {
+ CHECK_OBJ_NOTNULL(req->objcore, OBJCORE_MAGIC);
vary = VRY_Create(sp, wrk->busyobj->beresp);
if (vary != NULL) {
varyl = VSB_len(vary);
@@ -829,51 +829,51 @@ cnt_fetchbody(struct sess *sp, struct worker *wrk, struct req *req)
l += strlen("Content-Length: XxxXxxXxxXxxXxxXxx") + sizeof(void *);
if (wrk->busyobj->exp.ttl < cache_param->shortlived ||
- wrk->objcore == NULL)
+ req->objcore == NULL)
wrk->storage_hint = TRANSIENT_STORAGE;
- wrk->obj = STV_NewObject(wrk, wrk->storage_hint, l, nhttp);
- if (wrk->obj == NULL) {
+ req->obj = STV_NewObject(wrk, wrk->storage_hint, l, nhttp);
+ if (req->obj == NULL) {
/*
* Try to salvage the transaction by allocating a
* shortlived object on Transient storage.
*/
- wrk->obj = STV_NewObject(wrk, TRANSIENT_STORAGE, l, nhttp);
+ req->obj = STV_NewObject(wrk, TRANSIENT_STORAGE, l, nhttp);
if (wrk->busyobj->exp.ttl > cache_param->shortlived)
wrk->busyobj->exp.ttl = cache_param->shortlived;
wrk->busyobj->exp.grace = 0.0;
wrk->busyobj->exp.keep = 0.0;
}
- if (wrk->obj == NULL) {
+ if (req->obj == NULL) {
req->err_code = 503;
sp->step = STP_ERROR;
VDI_CloseFd(wrk, &wrk->busyobj->vbc);
VBO_DerefBusyObj(wrk, &wrk->busyobj);
return (0);
}
- CHECK_OBJ_NOTNULL(wrk->obj, OBJECT_MAGIC);
+ CHECK_OBJ_NOTNULL(req->obj, OBJECT_MAGIC);
wrk->storage_hint = NULL;
if (wrk->busyobj->do_gzip ||
(wrk->busyobj->is_gzip && !wrk->busyobj->do_gunzip))
- wrk->obj->gziped = 1;
+ req->obj->gziped = 1;
if (vary != NULL) {
- wrk->obj->vary = (void *)WS_Alloc(wrk->obj->http->ws, varyl);
- AN(wrk->obj->vary);
- memcpy(wrk->obj->vary, VSB_data(vary), varyl);
- VRY_Validate(wrk->obj->vary);
+ req->obj->vary = (void *)WS_Alloc(req->obj->http->ws, varyl);
+ AN(req->obj->vary);
+ memcpy(req->obj->vary, VSB_data(vary), varyl);
+ VRY_Validate(req->obj->vary);
VSB_delete(vary);
}
- wrk->obj->xid = req->xid;
- wrk->obj->response = req->err_code;
- WS_Assert(wrk->obj->ws_o);
+ req->obj->xid = req->xid;
+ req->obj->response = req->err_code;
+ WS_Assert(req->obj->ws_o);
/* Filter into object */
hp = wrk->busyobj->beresp;
- hp2 = wrk->obj->http;
+ hp2 = req->obj->http;
hp2->logtag = HTTP_Obj;
http_CopyResp(hp2, hp);
@@ -882,9 +882,9 @@ cnt_fetchbody(struct sess *sp, struct worker *wrk, struct req *req)
http_CopyHome(wrk, sp->vsl_id, hp2);
if (http_GetHdr(hp, H_Last_Modified, &b))
- wrk->obj->last_modified = VTIM_parse(b);
+ req->obj->last_modified = VTIM_parse(b);
else
- wrk->obj->last_modified = floor(wrk->busyobj->exp.entered);
+ req->obj->last_modified = floor(wrk->busyobj->exp.entered);
assert(WRW_IsReleased(wrk));
@@ -893,12 +893,12 @@ cnt_fetchbody(struct sess *sp, struct worker *wrk, struct req *req)
* Notice that vcl_deliver{} could still nuke the headers
* that allow the 304, in which case we return 200 non-stream.
*/
- if (wrk->obj->response == 200 &&
+ if (req->obj->response == 200 &&
req->http->conds &&
RFC2616_Do_Cond(sp))
wrk->busyobj->do_stream = 0;
- AssertObjCorePassOrBusy(wrk->obj->objcore);
+ AssertObjCorePassOrBusy(req->obj->objcore);
if (wrk->busyobj->do_stream) {
sp->step = STP_PREPRESP;
@@ -906,7 +906,7 @@ cnt_fetchbody(struct sess *sp, struct worker *wrk, struct req *req)
}
/* Use unmodified headers*/
- i = FetchBody(wrk, wrk->obj);
+ i = FetchBody(wrk, req->obj);
http_Setup(wrk->busyobj->bereq, NULL);
http_Setup(wrk->busyobj->beresp, NULL);
@@ -918,16 +918,16 @@ cnt_fetchbody(struct sess *sp, struct worker *wrk, struct req *req)
if (i) {
HSH_Drop(wrk);
VBO_DerefBusyObj(wrk, &wrk->busyobj);
- AZ(wrk->obj);
+ AZ(req->obj);
req->err_code = 503;
sp->step = STP_ERROR;
return (0);
}
- if (wrk->obj->objcore != NULL) {
- EXP_Insert(wrk->obj);
- AN(wrk->obj->objcore);
- AN(wrk->obj->objcore->ban);
+ if (req->obj->objcore != NULL) {
+ EXP_Insert(req->obj);
+ AN(req->obj->objcore);
+ AN(req->obj->objcore->ban);
HSH_Unbusy(wrk);
}
VBO_DerefBusyObj(wrk, &wrk->busyobj);
@@ -973,9 +973,9 @@ cnt_streambody(struct sess *sp, struct worker *wrk, struct req *req)
RES_StreamStart(sp);
- AssertObjCorePassOrBusy(wrk->obj->objcore);
+ AssertObjCorePassOrBusy(req->obj->objcore);
- i = FetchBody(wrk, wrk->obj);
+ i = FetchBody(wrk, req->obj);
http_Setup(wrk->busyobj->bereq, NULL);
http_Setup(wrk->busyobj->beresp, NULL);
@@ -983,10 +983,10 @@ cnt_streambody(struct sess *sp, struct worker *wrk, struct req *req)
AZ(wrk->busyobj->vbc);
AN(req->director);
- if (!i && wrk->obj->objcore != NULL) {
- EXP_Insert(wrk->obj);
- AN(wrk->obj->objcore);
- AN(wrk->obj->objcore->ban);
+ if (!i && req->obj->objcore != NULL) {
+ EXP_Insert(req->obj);
+ AN(req->obj->objcore);
+ AN(req->obj->objcore->ban);
HSH_Unbusy(wrk);
} else {
req->doclose = "Stream error";
@@ -1002,7 +1002,7 @@ cnt_streambody(struct sess *sp, struct worker *wrk, struct req *req)
wrk->sctx = NULL;
assert(WRW_IsReleased(wrk));
assert(wrk->wrw.ciov == wrk->wrw.siov);
- (void)HSH_Deref(wrk, NULL, &wrk->obj);
+ (void)HSH_Deref(wrk, NULL, &req->obj);
VBO_DerefBusyObj(wrk, &wrk->busyobj);
http_Setup(req->resp, NULL);
sp->step = STP_DONE;
@@ -1075,11 +1075,11 @@ cnt_hit(struct sess *sp, struct worker *wrk, struct req *req)
CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
CHECK_OBJ_NOTNULL(req, REQ_MAGIC);
- CHECK_OBJ_NOTNULL(wrk->obj, OBJECT_MAGIC);
+ CHECK_OBJ_NOTNULL(req->obj, OBJECT_MAGIC);
CHECK_OBJ_NOTNULL(req->vcl, VCL_CONF_MAGIC);
AZ(wrk->busyobj);
- assert(!(wrk->obj->objcore->flags & OC_F_PASS));
+ assert(!(req->obj->objcore->flags & OC_F_PASS));
VCL_hit_method(sp);
@@ -1093,8 +1093,8 @@ cnt_hit(struct sess *sp, struct worker *wrk, struct req *req)
}
/* Drop our object, we won't need it */
- (void)HSH_Deref(wrk, NULL, &wrk->obj);
- wrk->objcore = NULL;
+ (void)HSH_Deref(wrk, NULL, &req->obj);
+ req->objcore = NULL;
switch(req->handling) {
case VCL_RET_PASS:
@@ -1200,7 +1200,7 @@ cnt_lookup(struct sess *sp, struct worker *wrk, struct req *req)
req->vary_l = NULL;
req->vary_e = NULL;
- wrk->objcore = oc;
+ req->objcore = oc;
CHECK_OBJ_NOTNULL(wrk->busyobj, BUSYOBJ_MAGIC);
sp->step = STP_MISS;
return (0);
@@ -1208,7 +1208,7 @@ cnt_lookup(struct sess *sp, struct worker *wrk, struct req *req)
o = oc_getobj(wrk, oc);
CHECK_OBJ_NOTNULL(o, OBJECT_MAGIC);
- wrk->obj = o;
+ req->obj = o;
WS_Release(req->ws, 0);
req->vary_b = NULL;
@@ -1217,15 +1217,15 @@ cnt_lookup(struct sess *sp, struct worker *wrk, struct req *req)
if (oc->flags & OC_F_PASS) {
wrk->stats.cache_hitpass++;
- WSP(sp, SLT_HitPass, "%u", wrk->obj->xid);
- (void)HSH_Deref(wrk, NULL, &wrk->obj);
- wrk->objcore = NULL;
+ WSP(sp, SLT_HitPass, "%u", req->obj->xid);
+ (void)HSH_Deref(wrk, NULL, &req->obj);
+ req->objcore = NULL;
sp->step = STP_PASS;
return (0);
}
wrk->stats.cache_hit++;
- WSP(sp, SLT_Hit, "%u", wrk->obj->xid);
+ WSP(sp, SLT_Hit, "%u", req->obj->xid);
sp->step = STP_HIT;
return (0);
}
@@ -1262,8 +1262,8 @@ cnt_miss(struct sess *sp, struct worker *wrk, struct req *req)
CHECK_OBJ_NOTNULL(req, REQ_MAGIC);
CHECK_OBJ_NOTNULL(req->vcl, VCL_CONF_MAGIC);
- AZ(wrk->obj);
- AN(wrk->objcore);
+ AZ(req->obj);
+ AN(req->objcore);
CHECK_OBJ_NOTNULL(wrk->busyobj, BUSYOBJ_MAGIC);
WS_Reset(wrk->ws, NULL);
wrk->busyobj = VBO_GetBusyObj(wrk);
@@ -1288,15 +1288,15 @@ cnt_miss(struct sess *sp, struct worker *wrk, struct req *req)
switch(req->handling) {
case VCL_RET_ERROR:
- AZ(HSH_Deref(wrk, wrk->objcore, NULL));
- wrk->objcore = NULL;
+ AZ(HSH_Deref(wrk, req->objcore, NULL));
+ req->objcore = NULL;
http_Setup(wrk->busyobj->bereq, NULL);
VBO_DerefBusyObj(wrk, &wrk->busyobj);
sp->step = STP_ERROR;
return (0);
case VCL_RET_PASS:
- AZ(HSH_Deref(wrk, wrk->objcore, NULL));
- wrk->objcore = NULL;
+ AZ(HSH_Deref(wrk, req->objcore, NULL));
+ req->objcore = NULL;
VBO_DerefBusyObj(wrk, &wrk->busyobj);
sp->step = STP_PASS;
return (0);
@@ -1305,8 +1305,8 @@ cnt_miss(struct sess *sp, struct worker *wrk, struct req *req)
sp->step = STP_FETCH;
return (0);
case VCL_RET_RESTART:
- AZ(HSH_Deref(wrk, wrk->objcore, NULL));
- wrk->objcore = NULL;
+ AZ(HSH_Deref(wrk, req->objcore, NULL));
+ req->objcore = NULL;
VBO_DerefBusyObj(wrk, &wrk->busyobj);
INCOMPL();
default:
@@ -1353,7 +1353,7 @@ cnt_pass(struct sess *sp, struct worker *wrk, struct req *req)
CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
CHECK_OBJ_NOTNULL(req, REQ_MAGIC);
CHECK_OBJ_NOTNULL(req->vcl, VCL_CONF_MAGIC);
- AZ(wrk->obj);
+ AZ(req->obj);
AZ(wrk->busyobj);
wrk->busyobj = VBO_GetBusyObj(wrk);
@@ -1464,7 +1464,7 @@ cnt_recv(struct sess *sp, struct worker *wrk, struct req *req)
CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
CHECK_OBJ_NOTNULL(req, REQ_MAGIC);
CHECK_OBJ_NOTNULL(req->vcl, VCL_CONF_MAGIC);
- AZ(wrk->obj);
+ AZ(req->obj);
AZ(wrk->busyobj);
assert(wrk->wrw.ciov == wrk->wrw.siov);
@@ -1562,7 +1562,7 @@ cnt_start(struct sess *sp, struct worker *wrk, struct req *req)
CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
CHECK_OBJ_NOTNULL(req, REQ_MAGIC);
AZ(req->restarts);
- AZ(wrk->obj);
+ AZ(req->obj);
AZ(req->vcl);
EXP_Clr(&req->exp);
AZ(req->esi_level);
@@ -1641,20 +1641,24 @@ static void
cnt_diag(struct sess *sp, const char *state)
{
void *vcl;
+ void *obj;
- if (sp->req == NULL)
+ if (sp->req == NULL) {
vcl = NULL;
- else
+ obj = NULL;
+ } else {
vcl = sp->req->vcl;
+ obj = sp->req->obj;
+ }
if (sp->wrk != NULL) {
WSP(sp, SLT_Debug, "thr %p STP_%s sp %p obj %p vcl %p",
- pthread_self(), state, sp, sp->wrk->obj, vcl);
+ pthread_self(), state, sp, obj, vcl);
WSL_Flush(sp->wrk, 0);
} else {
VSL(SLT_Debug, sp->vsl_id,
"thr %p STP_%s sp %p obj %p vcl %p",
- pthread_self(), state, sp, sp->wrk->obj, vcl);
+ pthread_self(), state, sp, obj, vcl);
}
}
@@ -1681,9 +1685,6 @@ CNT_Session(struct sess *sp)
sp->step == STP_LOOKUP ||
sp->step == STP_RECV);
- AZ(wrk->obj);
- AZ(wrk->objcore);
-
/*
* Whenever we come in from the acceptor or waiter, we need to set
* blocking mode, but there is no point in setting it when we come from
@@ -1716,7 +1717,6 @@ CNT_Session(struct sess *sp)
*/
CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
- CHECK_OBJ_ORNULL(wrk->obj, OBJECT_MAGIC);
CHECK_OBJ_ORNULL(wrk->nobjhead, OBJHEAD_MAGIC);
WS_Assert(wrk->ws);
@@ -1736,8 +1736,6 @@ CNT_Session(struct sess *sp)
CHECK_OBJ_ORNULL(wrk->nobjhead, OBJHEAD_MAGIC);
}
WSL_Flush(wrk, 0);
- AZ(wrk->obj);
- AZ(wrk->objcore);
#define ACCT(foo) AZ(wrk->acct_tmp.foo);
#include "tbl/acct_fields.h"
#undef ACCT
diff --git a/bin/varnishd/cache/cache_esi_deliver.c b/bin/varnishd/cache/cache_esi_deliver.c
index be8d185..0c58395 100644
--- a/bin/varnishd/cache/cache_esi_deliver.c
+++ b/bin/varnishd/cache/cache_esi_deliver.c
@@ -58,8 +58,8 @@ ved_include(struct sess *sp, const char *src, const char *host)
(void)WRW_FlushRelease(w);
- obj = sp->wrk->obj;
- sp->wrk->obj = NULL;
+ obj = sp->req->obj;
+ sp->req->obj = NULL;
res_mode = sp->wrk->res_mode;
/* Reset request to status before we started messing with it */
@@ -106,7 +106,7 @@ ved_include(struct sess *sp, const char *src, const char *host)
AN(sp->wrk);
assert(sp->step == STP_DONE);
sp->req->esi_level--;
- sp->wrk->obj = obj;
+ sp->req->obj = obj;
sp->wrk->res_mode = res_mode;
/* Reset the workspace */
@@ -231,7 +231,7 @@ ESI_Deliver(struct sess *sp)
int i;
CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
- st = sp->wrk->obj->esidata;
+ st = sp->req->obj->esidata;
AN(st);
assert(sizeof obuf >= 1024);
@@ -276,7 +276,7 @@ ESI_Deliver(struct sess *sp)
obufl = 0;
}
- st = VTAILQ_FIRST(&sp->wrk->obj->store);
+ st = VTAILQ_FIRST(&sp->req->obj->store);
off = 0;
while (p < e) {
@@ -435,7 +435,7 @@ ved_deliver_byterange(const struct sess *sp, ssize_t low, ssize_t high)
//printf("BR %jd %jd\n", low, high);
lx = 0;
- VTAILQ_FOREACH(st, &sp->wrk->obj->store, list) {
+ VTAILQ_FOREACH(st, &sp->req->obj->store, list) {
p = st->ptr;
l = st->len;
//printf("[0-] %jd %jd\n", lx, lx + l);
@@ -476,8 +476,8 @@ ESI_DeliverChild(const struct sess *sp)
uint32_t ilen;
uint8_t *dbits;
- if (!sp->wrk->obj->gziped) {
- VTAILQ_FOREACH(st, &sp->wrk->obj->store, list)
+ if (!sp->req->obj->gziped) {
+ VTAILQ_FOREACH(st, &sp->req->obj->store, list)
ved_pretend_gzip(sp, st->ptr, st->len);
return;
}
@@ -489,7 +489,7 @@ ESI_DeliverChild(const struct sess *sp)
dbits = (void*)WS_Alloc(sp->wrk->ws, 8);
AN(dbits);
- obj = sp->wrk->obj;
+ obj = sp->req->obj;
CHECK_OBJ_NOTNULL(obj, OBJECT_MAGIC);
start = obj->gzip_start;
last = obj->gzip_last;
@@ -554,7 +554,7 @@ ESI_DeliverChild(const struct sess *sp)
}
if (lpad > 0)
(void)WRW_Write(sp->wrk, dbits + 1, lpad);
- st = VTAILQ_LAST(&sp->wrk->obj->store, storagehead);
+ st = VTAILQ_LAST(&sp->req->obj->store, storagehead);
assert(st->len > 8);
p = st->ptr + st->len - 8;
diff --git a/bin/varnishd/cache/cache_fetch.c b/bin/varnishd/cache/cache_fetch.c
index 2e65591..7070612 100644
--- a/bin/varnishd/cache/cache_fetch.c
+++ b/bin/varnishd/cache/cache_fetch.c
@@ -391,11 +391,11 @@ FetchHdr(struct sess *sp, int need_host_hdr)
htc = &wrk->busyobj->htc;
AN(sp->req->director);
- AZ(sp->wrk->obj);
+ AZ(sp->req->obj);
- if (sp->wrk->objcore != NULL) { /* pass has no objcore */
- CHECK_OBJ_NOTNULL(sp->wrk->objcore, OBJCORE_MAGIC);
- AN(sp->wrk->objcore->flags & OC_F_BUSY);
+ if (sp->req->objcore != NULL) { /* pass has no objcore */
+ CHECK_OBJ_NOTNULL(sp->req->objcore, OBJCORE_MAGIC);
+ AN(sp->req->objcore->flags & OC_F_BUSY);
}
hp = wrk->busyobj->bereq;
diff --git a/bin/varnishd/cache/cache_gzip.c b/bin/varnishd/cache/cache_gzip.c
index 061348a..1b732ca 100644
--- a/bin/varnishd/cache/cache_gzip.c
+++ b/bin/varnishd/cache/cache_gzip.c
@@ -248,7 +248,7 @@ VGZ_ObufFull(const struct vgz *vg)
/*--------------------------------------------------------------------
* Keep the outbuffer supplied with storage and file it under the
- * sp->wrk->obj as it fills.
+ * sp->req->obj as it fills.
*/
int
diff --git a/bin/varnishd/cache/cache_hash.c b/bin/varnishd/cache/cache_hash.c
index 9f2c053..19395d5 100644
--- a/bin/varnishd/cache/cache_hash.c
+++ b/bin/varnishd/cache/cache_hash.c
@@ -389,8 +389,8 @@ HSH_Lookup(struct sess *sp, struct objhead **poh)
* XXX: serialize fetch of all Vary's if grace is possible.
*/
- AZ(sp->wrk->objcore);
- sp->wrk->objcore = grace_oc; /* XXX: Hack-ish */
+ AZ(sp->req->objcore);
+ sp->req->objcore = grace_oc; /* XXX: Hack-ish */
if (oc == NULL /* We found no live object */
&& grace_oc != NULL /* There is a grace candidate */
&& (busy_oc != NULL /* Somebody else is already busy */
@@ -400,7 +400,7 @@ HSH_Lookup(struct sess *sp, struct objhead **poh)
CHECK_OBJ_NOTNULL(o, OBJECT_MAGIC);
oc = grace_oc;
}
- sp->wrk->objcore = NULL;
+ sp->req->objcore = NULL;
if (oc != NULL && !sp->req->hash_always_miss) {
o = oc_getobj(sp->wrk, oc);
@@ -580,13 +580,13 @@ HSH_Drop(struct worker *wrk)
struct object *o;
CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
- o = wrk->obj;
+ o = wrk->sp->req->obj;
CHECK_OBJ_NOTNULL(o, OBJECT_MAGIC);
AssertObjCorePassOrBusy(o->objcore);
o->exp.ttl = -1.;
if (o->objcore != NULL) /* Pass has no objcore */
HSH_Unbusy(wrk);
- (void)HSH_Deref(wrk, NULL, &wrk->obj);
+ (void)HSH_Deref(wrk, NULL, &wrk->sp->req->obj);
}
void
@@ -597,7 +597,7 @@ HSH_Unbusy(struct worker *wrk)
struct objcore *oc;
CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
- o = wrk->obj;
+ o = wrk->sp->req->obj;
CHECK_OBJ_NOTNULL(o, OBJECT_MAGIC);
oc = o->objcore;
CHECK_OBJ_NOTNULL(oc, OBJCORE_MAGIC);
diff --git a/bin/varnishd/cache/cache_panic.c b/bin/varnishd/cache/cache_panic.c
index 80f61a4..b09bcb8 100644
--- a/bin/varnishd/cache/cache_panic.c
+++ b/bin/varnishd/cache/cache_panic.c
@@ -274,8 +274,8 @@ pan_sess(const struct sess *sp)
if (VALID_OBJ(sp->req->vcl, VCL_CONF_MAGIC))
pan_vcl(sp->req->vcl);
- if (VALID_OBJ(sp->wrk->obj, OBJECT_MAGIC))
- pan_object(sp->wrk->obj);
+ if (VALID_OBJ(sp->req->obj, OBJECT_MAGIC))
+ pan_object(sp->req->obj);
VSB_printf(pan_vsp, "},\n");
}
diff --git a/bin/varnishd/cache/cache_response.c b/bin/varnishd/cache/cache_response.c
index 5c10c35..1abb12b 100644
--- a/bin/varnishd/cache/cache_response.c
+++ b/bin/varnishd/cache/cache_response.c
@@ -41,7 +41,7 @@ res_dorange(const struct sess *sp, const char *r, ssize_t *plow, ssize_t *phigh)
{
ssize_t low, high, has_low;
- assert(sp->wrk->obj->response == 200);
+ assert(sp->req->obj->response == 200);
if (strncmp(r, "bytes=", 6))
return;
r += 6;
@@ -57,7 +57,7 @@ res_dorange(const struct sess *sp, const char *r, ssize_t *plow, ssize_t *phigh)
r++;
}
- if (low >= sp->wrk->obj->len)
+ if (low >= sp->req->obj->len)
return;
if (*r != '-')
@@ -73,23 +73,23 @@ res_dorange(const struct sess *sp, const char *r, ssize_t *plow, ssize_t *phigh)
r++;
}
if (!has_low) {
- low = sp->wrk->obj->len - high;
- high = sp->wrk->obj->len - 1;
+ low = sp->req->obj->len - high;
+ high = sp->req->obj->len - 1;
}
} else
- high = sp->wrk->obj->len - 1;
+ high = sp->req->obj->len - 1;
if (*r != '\0')
return;
- if (high >= sp->wrk->obj->len)
- high = sp->wrk->obj->len - 1;
+ if (high >= sp->req->obj->len)
+ high = sp->req->obj->len - 1;
if (low > high)
return;
http_PrintfHeader(sp->wrk, sp->vsl_id, sp->req->resp,
"Content-Range: bytes %jd-%jd/%jd",
- (intmax_t)low, (intmax_t)high, (intmax_t)sp->wrk->obj->len);
+ (intmax_t)low, (intmax_t)high, (intmax_t)sp->req->obj->len);
http_Unset(sp->req->resp, H_Content_Length);
assert(sp->wrk->res_mode & RES_LEN);
http_PrintfHeader(sp->wrk, sp->vsl_id, sp->req->resp,
@@ -112,9 +112,9 @@ RES_BuildHttp(const struct sess *sp)
http_ClrHeader(sp->req->resp);
sp->req->resp->logtag = HTTP_Tx;
- http_CopyResp(sp->req->resp, sp->wrk->obj->http);
+ http_CopyResp(sp->req->resp, sp->req->obj->http);
http_FilterFields(sp->wrk, sp->vsl_id, sp->req->resp,
- sp->wrk->obj->http, HTTPH_A_DELIVER);
+ sp->req->obj->http, HTTPH_A_DELIVER);
if (!(sp->wrk->res_mode & RES_LEN)) {
http_Unset(sp->req->resp, H_Content_Length);
@@ -132,15 +132,15 @@ RES_BuildHttp(const struct sess *sp)
http_PrintfHeader(sp->wrk, sp->vsl_id, sp->req->resp,
"Date: %s", time_str);
- if (sp->req->xid != sp->wrk->obj->xid)
+ if (sp->req->xid != sp->req->obj->xid)
http_PrintfHeader(sp->wrk, sp->vsl_id, sp->req->resp,
- "X-Varnish: %u %u", sp->req->xid, sp->wrk->obj->xid);
+ "X-Varnish: %u %u", sp->req->xid, sp->req->obj->xid);
else
http_PrintfHeader(sp->wrk, sp->vsl_id, sp->req->resp,
"X-Varnish: %u", sp->req->xid);
http_PrintfHeader(sp->wrk, sp->vsl_id, sp->req->resp, "Age: %.0f",
- sp->wrk->obj->exp.age + sp->req->t_resp -
- sp->wrk->obj->exp.entered);
+ sp->req->obj->exp.age + sp->req->t_resp -
+ sp->req->obj->exp.entered);
http_SetHeader(sp->wrk, sp->vsl_id, sp->req->resp, "Via: 1.1 varnish");
http_PrintfHeader(sp->wrk, sp->vsl_id, sp->req->resp, "Connection: %s",
sp->req->doclose ? "close" : "keep-alive");
@@ -167,7 +167,7 @@ res_WriteGunzipObj(const struct sess *sp)
vg = VGZ_NewUngzip(sp->wrk, "U D -");
VGZ_Obuf(vg, obuf, sizeof obuf);
- VTAILQ_FOREACH(st, &sp->wrk->obj->store, list) {
+ VTAILQ_FOREACH(st, &sp->req->obj->store, list) {
CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
CHECK_OBJ_NOTNULL(st, STORAGE_MAGIC);
u += st->len;
@@ -185,7 +185,7 @@ res_WriteGunzipObj(const struct sess *sp)
(void)WRW_Flush(sp->wrk);
}
(void)VGZ_Destroy(&vg, sp->vsl_id);
- assert(u == sp->wrk->obj->len);
+ assert(u == sp->req->obj->len);
}
/*--------------------------------------------------------------------*/
@@ -200,7 +200,7 @@ res_WriteDirObj(const struct sess *sp, ssize_t low, ssize_t high)
CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
ptr = 0;
- VTAILQ_FOREACH(st, &sp->wrk->obj->store, list) {
+ VTAILQ_FOREACH(st, &sp->req->obj->store, list) {
CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
CHECK_OBJ_NOTNULL(st, STORAGE_MAGIC);
u += st->len;
@@ -241,7 +241,7 @@ res_WriteDirObj(const struct sess *sp, ssize_t low, ssize_t high)
VSC_C_main->n_objwrite++;
(void)WRW_Write(sp->wrk, st->ptr + off, len);
}
- assert(u == sp->wrk->obj->len);
+ assert(u == sp->req->obj->len);
}
/*--------------------------------------------------------------------
@@ -259,7 +259,7 @@ RES_WriteObj(struct sess *sp)
WRW_Reserve(sp->wrk, &sp->fd);
- if (sp->wrk->obj->response == 200 &&
+ if (sp->req->obj->response == 200 &&
sp->req->http->conds &&
RFC2616_Do_Cond(sp)) {
sp->req->wantbody = 0;
@@ -272,13 +272,13 @@ RES_WriteObj(struct sess *sp)
* If nothing special planned, we can attempt Range support
*/
low = 0;
- high = sp->wrk->obj->len - 1;
+ high = sp->req->obj->len - 1;
if (
sp->req->wantbody &&
(sp->wrk->res_mode & RES_LEN) &&
!(sp->wrk->res_mode & (RES_ESI|RES_ESI_CHILD|RES_GUNZIP)) &&
cache_param->http_range_support &&
- sp->wrk->obj->response == 200 &&
+ sp->req->obj->response == 200 &&
http_GetHdr(sp->req->http, H_Range, &r))
res_dorange(sp, r, &low, &high);
@@ -303,14 +303,14 @@ RES_WriteObj(struct sess *sp)
if (!sp->req->wantbody) {
/* This was a HEAD or conditional request */
- } else if (sp->wrk->obj->len == 0) {
+ } else if (sp->req->obj->len == 0) {
/* Nothing to do here */
} else if (sp->wrk->res_mode & RES_ESI) {
ESI_Deliver(sp);
} else if (sp->wrk->res_mode & RES_ESI_CHILD && sp->wrk->gzip_resp) {
ESI_DeliverChild(sp);
} else if (sp->wrk->res_mode & RES_ESI_CHILD &&
- !sp->wrk->gzip_resp && sp->wrk->obj->gziped) {
+ !sp->wrk->gzip_resp && sp->req->obj->gziped) {
res_WriteGunzipObj(sp);
} else if (sp->wrk->res_mode & RES_GUNZIP) {
res_WriteGunzipObj(sp);
diff --git a/bin/varnishd/cache/cache_rfc2616.c b/bin/varnishd/cache/cache_rfc2616.c
index 04641ca..1b67d81 100644
--- a/bin/varnishd/cache/cache_rfc2616.c
+++ b/bin/varnishd/cache/cache_rfc2616.c
@@ -319,18 +319,18 @@ RFC2616_Do_Cond(const struct sess *sp)
and If-Modified-Since if present*/
if (http_GetHdr(sp->req->http, H_If_Modified_Since, &p) ) {
- if (!sp->wrk->obj->last_modified)
+ if (!sp->req->obj->last_modified)
return (0);
ims = VTIM_parse(p);
if (ims > sp->t_req) /* [RFC2616 14.25] */
return (0);
- if (sp->wrk->obj->last_modified > ims)
+ if (sp->req->obj->last_modified > ims)
return (0);
do_cond = 1;
}
if (http_GetHdr(sp->req->http, H_If_None_Match, &p) &&
- http_GetHdr(sp->wrk->obj->http, H_ETag, &e)) {
+ http_GetHdr(sp->req->obj->http, H_ETag, &e)) {
if (strcmp(p,e) != 0)
return (0);
do_cond = 1;
diff --git a/bin/varnishd/cache/cache_vrt.c b/bin/varnishd/cache/cache_vrt.c
index 67875bd..2623bcc 100644
--- a/bin/varnishd/cache/cache_vrt.c
+++ b/bin/varnishd/cache/cache_vrt.c
@@ -110,8 +110,8 @@ vrt_selecthttp(const struct sess *sp, enum gethdr_e where)
hp = sp->req->resp;
break;
case HDR_OBJ:
- CHECK_OBJ_NOTNULL(sp->wrk->obj, OBJECT_MAGIC);
- hp = sp->wrk->obj->http;
+ CHECK_OBJ_NOTNULL(sp->req->obj, OBJECT_MAGIC);
+ hp = sp->req->obj->http;
break;
default:
INCOMPL();
@@ -401,8 +401,8 @@ VRT_synth_page(const struct sess *sp, unsigned flags, const char *str, ...)
(void)flags;
CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
- CHECK_OBJ_NOTNULL(sp->wrk->obj, OBJECT_MAGIC);
- vsb = SMS_Makesynth(sp->wrk->obj);
+ CHECK_OBJ_NOTNULL(sp->req->obj, OBJECT_MAGIC);
+ vsb = SMS_Makesynth(sp->req->obj);
AN(vsb);
VSB_cat(vsb, str);
@@ -415,10 +415,10 @@ VRT_synth_page(const struct sess *sp, unsigned flags, const char *str, ...)
p = va_arg(ap, const char *);
}
va_end(ap);
- SMS_Finish(sp->wrk->obj);
- http_Unset(sp->wrk->obj->http, H_Content_Length);
- http_PrintfHeader(sp->wrk, sp->vsl_id, sp->wrk->obj->http,
- "Content-Length: %zd", sp->wrk->obj->len);
+ SMS_Finish(sp->req->obj);
+ http_Unset(sp->req->obj->http, H_Content_Length);
+ http_PrintfHeader(sp->wrk, sp->vsl_id, sp->req->obj->http,
+ "Content-Length: %zd", sp->req->obj->len);
}
/*--------------------------------------------------------------------*/
@@ -512,9 +512,9 @@ void
VRT_purge(const struct sess *sp, double ttl, double grace)
{
if (sp->req->cur_method == VCL_MET_HIT)
- HSH_Purge(sp, sp->wrk->obj->objcore->objhead, ttl, grace);
+ HSH_Purge(sp, sp->req->obj->objcore->objhead, ttl, grace);
else if (sp->req->cur_method == VCL_MET_MISS)
- HSH_Purge(sp, sp->wrk->objcore->objhead, ttl, grace);
+ HSH_Purge(sp, sp->req->objcore->objhead, ttl, grace);
}
/*--------------------------------------------------------------------
diff --git a/bin/varnishd/cache/cache_vrt_var.c b/bin/varnishd/cache/cache_vrt_var.c
index 6e5c751..cb66ff7 100644
--- a/bin/varnishd/cache/cache_vrt_var.c
+++ b/bin/varnishd/cache/cache_vrt_var.c
@@ -88,8 +88,8 @@ VRT_DO_HDR(req, proto, sp->req->http, HTTP_HDR_PROTO)
VRT_DO_HDR(bereq, request, sp->wrk->busyobj->bereq, HTTP_HDR_REQ)
VRT_DO_HDR(bereq, url, sp->wrk->busyobj->bereq, HTTP_HDR_URL)
VRT_DO_HDR(bereq, proto, sp->wrk->busyobj->bereq, HTTP_HDR_PROTO)
-VRT_DO_HDR(obj, proto, sp->wrk->obj->http, HTTP_HDR_PROTO)
-VRT_DO_HDR(obj, response, sp->wrk->obj->http, HTTP_HDR_RESPONSE)
+VRT_DO_HDR(obj, proto, sp->req->obj->http, HTTP_HDR_PROTO)
+VRT_DO_HDR(obj, response, sp->req->obj->http, HTTP_HDR_RESPONSE)
VRT_DO_HDR(resp, proto, sp->req->resp, HTTP_HDR_PROTO)
VRT_DO_HDR(resp, response, sp->req->resp, HTTP_HDR_RESPONSE)
VRT_DO_HDR(beresp, proto, sp->wrk->busyobj->beresp, HTTP_HDR_PROTO)
@@ -114,7 +114,7 @@ VRT_r_##obj##_status(const struct sess *sp) \
return(http->status); \
}
-VRT_DO_STATUS(obj, sp->wrk->obj->http)
+VRT_DO_STATUS(obj, sp->req->obj->http)
VRT_DO_STATUS(beresp, sp->wrk->busyobj->beresp)
VRT_DO_STATUS(resp, sp->req->resp)
@@ -145,9 +145,9 @@ VRT_l_beresp_saintmode(const struct sess *sp, double a)
if (!vbc->backend)
return;
CHECK_OBJ_NOTNULL(vbc->backend, BACKEND_MAGIC);
- if (!sp->wrk->objcore)
+ if (!sp->req->objcore)
return;
- CHECK_OBJ_NOTNULL(sp->wrk->objcore, OBJCORE_MAGIC);
+ CHECK_OBJ_NOTNULL(sp->req->objcore, OBJCORE_MAGIC);
/* Setting a negative holdoff period is a mistake. Detecting this
* when compiling the VCL would be better.
@@ -156,7 +156,7 @@ VRT_l_beresp_saintmode(const struct sess *sp, double a)
ALLOC_OBJ(new, TROUBLE_MAGIC);
AN(new);
- new->target = (uintptr_t)(sp->wrk->objcore->objhead);
+ new->target = (uintptr_t)(sp->req->objcore->objhead);
new->timeout = sp->t_req + a;
/* Insert the new item on the list before the first item with a
@@ -405,15 +405,15 @@ VRT_DO_EXP(req, sp->req->exp, ttl, 0, )
VRT_DO_EXP(req, sp->req->exp, grace, 0, )
VRT_DO_EXP(req, sp->req->exp, keep, 0, )
-VRT_DO_EXP(obj, sp->wrk->obj->exp, grace, 0,
- EXP_Rearm(sp->wrk->obj);
- vrt_wsp_exp(sp, sp->wrk->obj->xid, &sp->wrk->obj->exp);)
-VRT_DO_EXP(obj, sp->wrk->obj->exp, ttl, (sp->t_req - sp->wrk->obj->exp.entered),
- EXP_Rearm(sp->wrk->obj);
- vrt_wsp_exp(sp, sp->wrk->obj->xid, &sp->wrk->obj->exp);)
-VRT_DO_EXP(obj, sp->wrk->obj->exp, keep, 0,
- EXP_Rearm(sp->wrk->obj);
- vrt_wsp_exp(sp, sp->wrk->obj->xid, &sp->wrk->obj->exp);)
+VRT_DO_EXP(obj, sp->req->obj->exp, grace, 0,
+ EXP_Rearm(sp->req->obj);
+ vrt_wsp_exp(sp, sp->req->obj->xid, &sp->req->obj->exp);)
+VRT_DO_EXP(obj, sp->req->obj->exp, ttl, (sp->t_req - sp->req->obj->exp.entered),
+ EXP_Rearm(sp->req->obj);
+ vrt_wsp_exp(sp, sp->req->obj->xid, &sp->req->obj->exp);)
+VRT_DO_EXP(obj, sp->req->obj->exp, keep, 0,
+ EXP_Rearm(sp->req->obj);
+ vrt_wsp_exp(sp, sp->req->obj->xid, &sp->req->obj->exp);)
VRT_DO_EXP(beresp, sp->wrk->busyobj->exp, grace, 0,
vrt_wsp_exp(sp, sp->req->xid, &sp->wrk->busyobj->exp);)
@@ -531,8 +531,8 @@ VRT_r_obj_hits(const struct sess *sp)
{
CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
- CHECK_OBJ_NOTNULL(sp->wrk->obj, OBJECT_MAGIC); /* XXX */
- return (sp->wrk->obj->hits);
+ CHECK_OBJ_NOTNULL(sp->req->obj, OBJECT_MAGIC); /* XXX */
+ return (sp->req->obj->hits);
}
double
@@ -540,8 +540,8 @@ VRT_r_obj_lastuse(const struct sess *sp)
{
CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
- CHECK_OBJ_NOTNULL(sp->wrk->obj, OBJECT_MAGIC); /* XXX */
- return (VTIM_real() - sp->wrk->obj->last_use);
+ CHECK_OBJ_NOTNULL(sp->req->obj, OBJECT_MAGIC); /* XXX */
+ return (VTIM_real() - sp->req->obj->last_use);
}
unsigned
diff --git a/bin/varnishd/storage/stevedore.c b/bin/varnishd/storage/stevedore.c
index a6156d4..ccd45b1 100644
--- a/bin/varnishd/storage/stevedore.c
+++ b/bin/varnishd/storage/stevedore.c
@@ -256,11 +256,11 @@ STV_MkObject(struct worker *wrk, void *ptr, unsigned ltot,
VTAILQ_INIT(&o->store);
wrk->stats.n_object++;
- if (wrk->objcore != NULL) {
- CHECK_OBJ_NOTNULL(wrk->objcore, OBJCORE_MAGIC);
+ if (wrk->sp->req->objcore != NULL) {
+ CHECK_OBJ_NOTNULL(wrk->sp->req->objcore, OBJCORE_MAGIC);
- o->objcore = wrk->objcore;
- wrk->objcore = NULL; /* refcnt follows pointer. */
+ o->objcore = wrk->sp->req->objcore;
+ wrk->sp->req->objcore = NULL; /* refcnt follows pointer. */
BAN_NewObjCore(o->objcore);
o->objcore->methods = &default_oc_methods;
diff --git a/bin/varnishd/storage/storage_persistent.c b/bin/varnishd/storage/storage_persistent.c
index 0791941..f90594e 100644
--- a/bin/varnishd/storage/storage_persistent.c
+++ b/bin/varnishd/storage/storage_persistent.c
@@ -474,10 +474,10 @@ smp_allocobj(struct stevedore *stv, struct worker *wrk, unsigned ltot,
struct objcore *oc;
unsigned objidx;
- if (wrk->objcore == NULL)
+ if (wrk->sp->req->objcore == NULL)
return (NULL); /* from cnt_error */
CAST_OBJ_NOTNULL(sc, stv->priv, SMP_SC_MAGIC);
- AN(wrk->objcore);
+ AN(wrk->sp->req->objcore);
AN(wrk->busyobj->exp.ttl > 0.);
ltot = IRNUP(sc, ltot);
More information about the varnish-commit
mailing list