[master] e4c002c Make VDI_RecycleFd() take a pointer to the vbc to recycle.
Poul-Henning Kamp
phk at varnish-cache.org
Mon Dec 5 14:43:51 CET 2011
commit e4c002c41096468083fddef3a47e6b5c49577744
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date: Mon Dec 5 13:28:20 2011 +0000
Make VDI_RecycleFd() take a pointer to the vbc to recycle.
diff --git a/bin/varnishd/cache/cache.h b/bin/varnishd/cache/cache.h
index 05aaf39..4cc356e 100644
--- a/bin/varnishd/cache/cache.h
+++ b/bin/varnishd/cache/cache.h
@@ -651,7 +651,7 @@ void VBE_UseHealth(const struct director *vdi);
struct vbc *VDI_GetFd(const struct director *, struct sess *sp);
int VDI_Healthy(const struct director *, const struct sess *sp);
void VDI_CloseFd(struct worker *wrk, struct vbc **vbp);
-void VDI_RecycleFd(struct worker *wrk);
+void VDI_RecycleFd(struct worker *wrk, struct vbc **vbp);
void VDI_AddHostHeader(const struct sess *sp);
void VBE_Poll(void);
diff --git a/bin/varnishd/cache/cache_dir.c b/bin/varnishd/cache/cache_dir.c
index 434277e..5902ce8 100644
--- a/bin/varnishd/cache/cache_dir.c
+++ b/bin/varnishd/cache/cache_dir.c
@@ -70,17 +70,22 @@ VDI_CloseFd(struct worker *wrk, struct vbc **vbp)
/* Recycle a connection ----------------------------------------------*/
void
-VDI_RecycleFd(struct worker *wrk)
+VDI_RecycleFd(struct worker *wrk, struct vbc **vbp)
{
struct backend *bp;
+ struct vbc *vc;
- CHECK_OBJ_NOTNULL(wrk->vbc, VBC_MAGIC);
- CHECK_OBJ_NOTNULL(wrk->vbc->backend, BACKEND_MAGIC);
- assert(wrk->vbc->fd >= 0);
+ CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
+ AN(vbp);
+ vc = *vbp;
+ *vbp = NULL;
+ CHECK_OBJ_NOTNULL(vc, VBC_MAGIC);
+ CHECK_OBJ_NOTNULL(vc->backend, BACKEND_MAGIC);
+ assert(vc->fd >= 0);
- bp = wrk->vbc->backend;
+ bp = vc->backend;
- WSL(wrk, SLT_BackendReuse, wrk->vbc->vsl_id, "%s", bp->display_name);
+ WSL(wrk, SLT_BackendReuse, vc->vsl_id, "%s", bp->display_name);
/*
* Flush the shmlog, so that another session reusing this backend
* will log chronologically later than our use of it.
@@ -88,8 +93,7 @@ VDI_RecycleFd(struct worker *wrk)
WSL_Flush(wrk, 0);
Lck_Lock(&bp->mtx);
VSC_C_main->backend_recycle++;
- VTAILQ_INSERT_HEAD(&bp->connlist, wrk->vbc, list);
- wrk->vbc = NULL;
+ VTAILQ_INSERT_HEAD(&bp->connlist, vc, list);
VBE_DropRefLocked(bp);
}
diff --git a/bin/varnishd/cache/cache_fetch.c b/bin/varnishd/cache/cache_fetch.c
index 7d8763f..d321d7a 100644
--- a/bin/varnishd/cache/cache_fetch.c
+++ b/bin/varnishd/cache/cache_fetch.c
@@ -617,7 +617,7 @@ FetchBody(struct worker *w, struct object *obj)
if (cls)
VDI_CloseFd(w, &w->vbc);
else
- VDI_RecycleFd(w);
+ VDI_RecycleFd(w, &w->vbc);
return (0);
}
More information about the varnish-commit
mailing list