Commit a34c900c authored by Poul-Henning Kamp's avatar Poul-Henning Kamp

Eliminate some wrk->sp usage.

parent 9a63616c
...@@ -673,7 +673,7 @@ struct sess { ...@@ -673,7 +673,7 @@ struct sess {
void VCA_Init(void); void VCA_Init(void);
void VCA_Shutdown(void); void VCA_Shutdown(void);
int VCA_Accept(struct listen_sock *ls, struct wrk_accept *wa); int VCA_Accept(struct listen_sock *ls, struct wrk_accept *wa);
void VCA_SetupSess(struct worker *w); void VCA_SetupSess(struct worker *w, struct sess *sp);
void VCA_FailSess(struct worker *w); void VCA_FailSess(struct worker *w);
/* cache_backend.c */ /* cache_backend.c */
......
...@@ -233,6 +233,7 @@ VCA_FailSess(struct worker *wrk) ...@@ -233,6 +233,7 @@ VCA_FailSess(struct worker *wrk)
AZ(close(wa->acceptsock)); AZ(close(wa->acceptsock));
wrk->stats.sess_drop++; wrk->stats.sess_drop++;
vca_pace_bad(); vca_pace_bad();
WS_Release(wrk->aws, 0);
} }
/*-------------------------------------------------------------------- /*--------------------------------------------------------------------
...@@ -240,15 +241,13 @@ VCA_FailSess(struct worker *wrk) ...@@ -240,15 +241,13 @@ VCA_FailSess(struct worker *wrk)
*/ */
void void
VCA_SetupSess(struct worker *wrk) VCA_SetupSess(struct worker *wrk, struct sess *sp)
{ {
struct sess *sp;
struct wrk_accept *wa; struct wrk_accept *wa;
CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC); CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
CAST_OBJ_NOTNULL(wa, (void*)wrk->aws->f, WRK_ACCEPT_MAGIC);
sp = wrk->sp;
CHECK_OBJ_NOTNULL(sp, SESS_MAGIC); CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
CAST_OBJ_NOTNULL(wa, (void*)wrk->aws->f, WRK_ACCEPT_MAGIC);
sp->vxid = wa->vxid; sp->vxid = wa->vxid;
sp->vseq = 0; sp->vseq = 0;
sp->fd = wa->acceptsock; sp->fd = wa->acceptsock;
...@@ -262,6 +261,7 @@ VCA_SetupSess(struct worker *wrk) ...@@ -262,6 +261,7 @@ VCA_SetupSess(struct worker *wrk)
sp->sockaddrlen = wa->acceptaddrlen; sp->sockaddrlen = wa->acceptaddrlen;
vca_pace_good(); vca_pace_good();
wrk->stats.sess_conn++; wrk->stats.sess_conn++;
WS_Release(wrk->aws, 0);
if (need_test) if (need_test)
sock_test(sp->fd); sock_test(sp->fd);
......
...@@ -285,7 +285,7 @@ cnt_prepresp(struct sess *sp, struct worker *wrk, struct req *req) ...@@ -285,7 +285,7 @@ cnt_prepresp(struct sess *sp, struct worker *wrk, struct req *req)
if (wrk->busyobj != NULL) { if (wrk->busyobj != NULL) {
AN(wrk->busyobj->do_stream); AN(wrk->busyobj->do_stream);
VDI_CloseFd(wrk, &wrk->busyobj->vbc); VDI_CloseFd(wrk, &wrk->busyobj->vbc);
HSH_Drop(wrk); HSH_Drop(wrk, &sp->req->obj);
VBO_DerefBusyObj(wrk, &wrk->busyobj); VBO_DerefBusyObj(wrk, &wrk->busyobj);
} else { } else {
(void)HSH_Deref(&wrk->stats, NULL, &req->obj); (void)HSH_Deref(&wrk->stats, NULL, &req->obj);
...@@ -509,7 +509,7 @@ cnt_error(struct sess *sp, struct worker *wrk, struct req *req) ...@@ -509,7 +509,7 @@ cnt_error(struct sess *sp, struct worker *wrk, struct req *req)
if (req->handling == VCL_RET_RESTART && if (req->handling == VCL_RET_RESTART &&
req->restarts < cache_param->max_restarts) { req->restarts < cache_param->max_restarts) {
HSH_Drop(wrk); HSH_Drop(wrk, &sp->req->obj);
VBO_DerefBusyObj(wrk, &wrk->busyobj); VBO_DerefBusyObj(wrk, &wrk->busyobj);
req->director = NULL; req->director = NULL;
req->restarts++; req->restarts++;
...@@ -892,7 +892,7 @@ cnt_fetchbody(struct sess *sp, struct worker *wrk, struct req *req) ...@@ -892,7 +892,7 @@ cnt_fetchbody(struct sess *sp, struct worker *wrk, struct req *req)
AN(req->director); AN(req->director);
if (i) { if (i) {
HSH_Drop(wrk); HSH_Drop(wrk, &sp->req->obj);
VBO_DerefBusyObj(wrk, &wrk->busyobj); VBO_DerefBusyObj(wrk, &wrk->busyobj);
AZ(req->obj); AZ(req->obj);
req->err_code = 503; req->err_code = 503;
......
...@@ -577,18 +577,17 @@ HSH_Purge(const struct sess *sp, struct objhead *oh, double ttl, double grace) ...@@ -577,18 +577,17 @@ HSH_Purge(const struct sess *sp, struct objhead *oh, double ttl, double grace)
*/ */
void void
HSH_Drop(struct worker *wrk) HSH_Drop(struct worker *wrk, struct object **oo)
{ {
struct object *o;
CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC); CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
o = wrk->sp->req->obj; AN(oo);
CHECK_OBJ_NOTNULL(o, OBJECT_MAGIC); CHECK_OBJ_NOTNULL(*oo, OBJECT_MAGIC);
AssertObjCorePassOrBusy(o->objcore); AssertObjCorePassOrBusy((*oo)->objcore);
o->exp.ttl = -1.; (*oo)->exp.ttl = -1.;
if (o->objcore != NULL) /* Pass has no objcore */ if ((*oo)->objcore != NULL) /* Pass has no objcore */
HSH_Unbusy(o->objcore); HSH_Unbusy((*oo)->objcore);
(void)HSH_Deref(&wrk->stats, NULL, &wrk->sp->req->obj); (void)HSH_Deref(&wrk->stats, NULL, oo);
} }
void void
......
...@@ -181,12 +181,11 @@ SES_pool_accept_task(struct worker *wrk, void *arg) ...@@ -181,12 +181,11 @@ SES_pool_accept_task(struct worker *wrk, void *arg)
wrk->sp = ses_new(pp); wrk->sp = ses_new(pp);
if (wrk->sp == NULL) { if (wrk->sp == NULL) {
VCA_FailSess(wrk); VCA_FailSess(wrk);
return; } else {
VCA_SetupSess(wrk, wrk->sp);
wrk->sp->step = STP_FIRST;
ses_pool_task(wrk, wrk->sp);
} }
VCA_SetupSess(wrk);
wrk->sp->step = STP_FIRST;
WS_Release(wrk->aws, 0);
ses_pool_task(wrk, wrk->sp);
} }
/*-------------------------------------------------------------------- /*--------------------------------------------------------------------
......
...@@ -56,7 +56,7 @@ void HSH_Cleanup(struct worker *w); ...@@ -56,7 +56,7 @@ void HSH_Cleanup(struct worker *w);
struct objcore *HSH_Lookup(struct sess *sp, struct objhead **poh); struct objcore *HSH_Lookup(struct sess *sp, struct objhead **poh);
void HSH_Unbusy(struct objcore *); void HSH_Unbusy(struct objcore *);
void HSH_Ref(struct objcore *o); void HSH_Ref(struct objcore *o);
void HSH_Drop(struct worker *wrk); void HSH_Drop(struct worker *, struct object **);
void HSH_Init(const struct hash_slinger *slinger); void HSH_Init(const struct hash_slinger *slinger);
void HSH_AddString(const struct sess *sp, const char *str); void HSH_AddString(const struct sess *sp, const char *str);
struct objcore *HSH_Insert(const struct sess *sp); struct objcore *HSH_Insert(const struct sess *sp);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment