[experimental-ims] 64e06ad Move vep from worker to busyobj

Geoff Simmons geoff at varnish-cache.org
Mon Jan 9 21:52:43 CET 2012


commit 64e06add5bacfb6b4a9ba855617f704e0691fdf6
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date:   Tue Nov 29 17:44:41 2011 +0000

    Move vep from worker to busyobj

diff --git a/bin/varnishd/cache/cache.h b/bin/varnishd/cache/cache.h
index 21382d7..634d9aa 100644
--- a/bin/varnishd/cache/cache.h
+++ b/bin/varnishd/cache/cache.h
@@ -348,7 +348,6 @@ struct worker {
 	struct stream_ctx	*sctx;
 
 	/* ESI stuff */
-	struct vep_state	*vep;
 	int			gzip_resp;
 	ssize_t			l_crc;
 	uint32_t		crc;
@@ -503,6 +502,7 @@ struct busyobj {
 	unsigned		is_gunzip;
 
 	struct vfp		*vfp;
+	struct vep_state	*vep;
 };
 
 /* Object structure --------------------------------------------------*/
diff --git a/bin/varnishd/cache/cache_esi.h b/bin/varnishd/cache/cache_esi.h
index ff84d41..4867614 100644
--- a/bin/varnishd/cache/cache_esi.h
+++ b/bin/varnishd/cache/cache_esi.h
@@ -43,6 +43,6 @@ typedef ssize_t vep_callback_t(struct worker *w, ssize_t l, enum vgz_flag flg);
 
 void VEP_Init(struct worker *w, vep_callback_t *cb);
 void VEP_Parse(const struct worker *w, const char *p, size_t l);
-struct vsb *VEP_Finish(struct worker *w);
+struct vsb *VEP_Finish(const struct worker *w);
 
 
diff --git a/bin/varnishd/cache/cache_esi_fetch.c b/bin/varnishd/cache/cache_esi_fetch.c
index 35166e7..f5748a3 100644
--- a/bin/varnishd/cache/cache_esi_fetch.c
+++ b/bin/varnishd/cache/cache_esi_fetch.c
@@ -325,7 +325,7 @@ vfp_esi_begin(struct worker *w, size_t estimate)
 	}
 
 	(void)estimate;
-	AN(w->vep);
+	AN(w->busyobj->vep);
 }
 
 static int __match_proto__()
@@ -335,7 +335,7 @@ vfp_esi_bytes(struct worker *w, struct http_conn *htc, ssize_t bytes)
 
 	CHECK_OBJ_NOTNULL(w, WORKER_MAGIC);
 	AZ(w->fetch_failed);
-	AN(w->vep);
+	AN(w->busyobj->vep);
 	assert(w->htc == htc);
 	if (w->busyobj->is_gzip && w->do_gunzip)
 		i = vfp_esi_bytes_gu(w, htc, bytes);
@@ -345,7 +345,7 @@ vfp_esi_bytes(struct worker *w, struct http_conn *htc, ssize_t bytes)
 		i = vfp_esi_bytes_gg(w, htc, bytes);
 	else
 		i = vfp_esi_bytes_uu(w, htc, bytes);
-	AN(w->vep);
+	AN(w->busyobj->vep);
 	return (i);
 }
 
@@ -358,7 +358,7 @@ vfp_esi_end(struct worker *w)
 	int retval;
 
 	CHECK_OBJ_NOTNULL(w, WORKER_MAGIC);
-	AN(w->vep);
+	AN(w->busyobj->vep);
 
 	retval = w->fetch_failed;
 
diff --git a/bin/varnishd/cache/cache_esi_parse.c b/bin/varnishd/cache/cache_esi_parse.c
index 9e2b4f6..71ec16d 100644
--- a/bin/varnishd/cache/cache_esi_parse.c
+++ b/bin/varnishd/cache/cache_esi_parse.c
@@ -556,7 +556,8 @@ VEP_Parse(const struct worker *w, const char *p, size_t l)
 	int i;
 
 	CHECK_OBJ_NOTNULL(w, WORKER_MAGIC);
-	vep = w->vep;
+	CHECK_OBJ_NOTNULL(w->busyobj, BUSYOBJ_MAGIC);
+	vep = w->busyobj->vep;
 	CHECK_OBJ_NOTNULL(vep, VEP_MAGIC);
 	assert(l > 0);
 
@@ -981,12 +982,15 @@ VEP_Parse(const struct worker *w, const char *p, size_t l)
 static ssize_t __match_proto__()
 vep_default_cb(struct worker *w, ssize_t l, enum vgz_flag flg)
 {
+	struct vep_state *vep;
 
+	CHECK_OBJ_NOTNULL(w, WORKER_MAGIC);
+	CHECK_OBJ_NOTNULL(w->busyobj, BUSYOBJ_MAGIC);
+	vep = w->busyobj->vep;
+	CHECK_OBJ_NOTNULL(vep, VEP_MAGIC);
 	(void)flg;
-	AN(w->vep);
-	w->vep->cb_x += l;
-Debug("CB(%jd,%d) = %jd\n", (intmax_t)l, flg, (intmax_t)w->vep->cb_x);
-	return (w->vep->cb_x);
+	vep->cb_x += l;
+	return (vep->cb_x);
 }
 
 /*---------------------------------------------------------------------
@@ -998,16 +1002,17 @@ VEP_Init(struct worker *w, vep_callback_t *cb)
 	struct vep_state *vep;
 
 	CHECK_OBJ_NOTNULL(w, WORKER_MAGIC);
-	AZ(w->vep);
-	w->vep = (void*)WS_Alloc(w->ws, sizeof *vep);
-	AN(w->vep);
+	CHECK_OBJ_NOTNULL(w->busyobj, BUSYOBJ_MAGIC);
+	AZ(w->busyobj->vep);
+	vep = (void*)WS_Alloc(w->ws, sizeof *vep);
+	AN(vep);
 
-	vep = w->vep;
 	memset(vep, 0, sizeof *vep);
 	vep->magic = VEP_MAGIC;
 	vep->wrk = w;
 	vep->vsb = VSB_new_auto();
 	AN(vep->vsb);
+	w->busyobj->vep = vep;
 
 	if (cb != NULL) {
 		vep->dogzip = 1;
@@ -1038,13 +1043,14 @@ VEP_Init(struct worker *w, vep_callback_t *cb)
  */
 
 struct vsb *
-VEP_Finish(struct worker *w)
+VEP_Finish(const struct worker *w)
 {
 	struct vep_state *vep;
 	ssize_t l, lcb;
 
 	CHECK_OBJ_NOTNULL(w, WORKER_MAGIC);
-	vep = w->vep;
+	CHECK_OBJ_NOTNULL(w->busyobj, BUSYOBJ_MAGIC);
+	vep = w->busyobj->vep;
 	CHECK_OBJ_NOTNULL(vep, VEP_MAGIC);
 
 	if (vep->o_pending)
@@ -1055,7 +1061,7 @@ VEP_Finish(struct worker *w)
 	}
 	(void)vep->cb(vep->wrk, 0, VGZ_FINISH);
 
-	w->vep = NULL;
+	w->busyobj->vep = NULL;
 
 	AZ(VSB_finish(vep->vsb));
 	l = VSB_len(vep->vsb);



More information about the varnish-commit mailing list