[experimental-ims] 22c90f1 Move do_gzip, do_gunzip and do_esi from worker to busyobj

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


commit 22c90f14b4c95c6691a00815d76096056465e6af
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date:   Wed Nov 30 06:49:49 2011 +0000

    Move do_gzip, do_gunzip and do_esi from worker to busyobj

diff --git a/bin/varnishd/cache/cache.h b/bin/varnishd/cache/cache.h
index a0e2821..9a4e5f3 100644
--- a/bin/varnishd/cache/cache.h
+++ b/bin/varnishd/cache/cache.h
@@ -333,9 +333,6 @@ struct worker {
 	struct vbc		*vbc;
 
 	unsigned		do_stream;
-	unsigned		do_esi;
-	unsigned		do_gzip;
-	unsigned		do_gunzip;
 	unsigned		do_close;
 	char			*h_content_length;
 
@@ -507,6 +504,10 @@ struct busyobj {
 
 	enum body_status	body_status;
 	struct vef_priv		*vef_priv;
+
+	unsigned		do_esi;
+	unsigned		do_gzip;
+	unsigned		do_gunzip;
 };
 
 /* Object structure --------------------------------------------------*/
diff --git a/bin/varnishd/cache/cache_center.c b/bin/varnishd/cache/cache_center.c
index 7d4a280..6acd218 100644
--- a/bin/varnishd/cache/cache_center.c
+++ b/bin/varnishd/cache/cache_center.c
@@ -184,8 +184,12 @@ cnt_prepresp(struct sess *sp)
 
 	wrk->res_mode = 0;
 
-	if ((wrk->h_content_length != NULL || !wrk->do_stream) &&
-	    !wrk->do_gzip && !wrk->do_gunzip)
+	if (wrk->busyobj == NULL)
+		wrk->res_mode |= RES_LEN;
+
+	if (wrk->busyobj != NULL &&
+	    (wrk->h_content_length != NULL || !wrk->do_stream) &&
+	    !wrk->busyobj->do_gzip && !wrk->busyobj->do_gunzip)
 		wrk->res_mode |= RES_LEN;
 
 	if (!sp->disable_esi && wrk->obj->esidata != NULL) {
@@ -339,9 +343,6 @@ cnt_done(struct sess *sp)
 
 	wrk->busyobj = NULL;
 
-	wrk->do_esi = 0;
-	wrk->do_gunzip = 0;
-	wrk->do_gzip = 0;
 	wrk->do_stream = 0;
 
 	SES_Charge(sp);
@@ -457,9 +458,6 @@ cnt_error(struct sess *sp)
 	wrk = sp->wrk;
 	CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
 
-	wrk->do_esi = 0;
-	wrk->do_gzip = 0;
-	wrk->do_gunzip = 0;
 	wrk->do_stream = 0;
 
 	if (wrk->obj == NULL) {
@@ -621,7 +619,7 @@ cnt_fetch(struct sess *sp)
 		if (wrk->objcore == NULL)
 			wrk->busyobj->exp.ttl = -1.;
 
-		AZ(wrk->do_esi);
+		AZ(wrk->busyobj->do_esi);
 
 		VCL_fetch_method(sp);
 
@@ -740,7 +738,7 @@ cnt_fetchbody(struct sess *sp)
 
 	/* We do nothing unless the param is set */
 	if (!cache_param->http_gzip_support)
-		wrk->do_gzip = wrk->do_gunzip = 0;
+		wrk->busyobj->do_gzip = wrk->busyobj->do_gunzip = 0;
 
 	wrk->busyobj->is_gzip =
 	    http_HdrIs(wrk->beresp, H_Content_Encoding, "gzip");
@@ -752,36 +750,36 @@ cnt_fetchbody(struct sess *sp)
 	assert(wrk->busyobj->is_gzip == 0 || wrk->busyobj->is_gunzip == 0);
 
 	/* We won't gunzip unless it is gzip'ed */
-	if (wrk->do_gunzip && !wrk->busyobj->is_gzip)
-		wrk->do_gunzip = 0;
+	if (wrk->busyobj->do_gunzip && !wrk->busyobj->is_gzip)
+		wrk->busyobj->do_gunzip = 0;
 
 	/* If we do gunzip, remove the C-E header */
-	if (wrk->do_gunzip)
+	if (wrk->busyobj->do_gunzip)
 		http_Unset(wrk->beresp, H_Content_Encoding);
 
 	/* We wont gzip unless it is ungziped */
-	if (wrk->do_gzip && !wrk->busyobj->is_gunzip)
-		wrk->do_gzip = 0;
+	if (wrk->busyobj->do_gzip && !wrk->busyobj->is_gunzip)
+		wrk->busyobj->do_gzip = 0;
 
 	/* If we do gzip, add the C-E header */
-	if (wrk->do_gzip)
+	if (wrk->busyobj->do_gzip)
 		http_SetHeader(wrk, sp->vsl_id, wrk->beresp,
 		    "Content-Encoding: gzip");
 
 	/* But we can't do both at the same time */
-	assert(wrk->do_gzip == 0 || wrk->do_gunzip == 0);
+	assert(wrk->busyobj->do_gzip == 0 || wrk->busyobj->do_gunzip == 0);
 
 	/* ESI takes precedence and handles gzip/gunzip itself */
-	if (wrk->do_esi)
+	if (wrk->busyobj->do_esi)
 		wrk->busyobj->vfp = &vfp_esi;
-	else if (wrk->do_gunzip)
+	else if (wrk->busyobj->do_gunzip)
 		wrk->busyobj->vfp = &vfp_gunzip;
-	else if (wrk->do_gzip)
+	else if (wrk->busyobj->do_gzip)
 		wrk->busyobj->vfp = &vfp_gzip;
 	else if (wrk->busyobj->is_gzip)
 		wrk->busyobj->vfp = &vfp_testgzip;
 
-	if (wrk->do_esi || sp->esi_level > 0)
+	if (wrk->busyobj->do_esi || sp->esi_level > 0)
 		wrk->do_stream = 0;
 	if (!sp->wantbody)
 		wrk->do_stream = 0;
@@ -832,7 +830,8 @@ cnt_fetchbody(struct sess *sp)
 
 	wrk->storage_hint = NULL;
 
-	if (wrk->do_gzip || (wrk->busyobj->is_gzip && !wrk->do_gunzip))
+	if (wrk->busyobj->do_gzip ||
+	    (wrk->busyobj->is_gzip && !wrk->busyobj->do_gunzip))
 		wrk->obj->gziped = 1;
 
 	if (vary != NULL) {
@@ -1470,9 +1469,6 @@ cnt_recv(struct sess *sp)
 	}
 
 	/* Zap these, in case we came here through restart */
-	wrk->do_esi = 0;
-	wrk->do_gzip = 0;
-	wrk->do_gunzip = 0;
 	wrk->do_stream = 0;
 
 	if (cache_param->http_gzip_support &&
@@ -1656,9 +1652,6 @@ CNT_Session(struct sess *sp)
 	    sp->step == STP_RECV);
 
 	AZ(wrk->do_stream);
-	AZ(wrk->do_gzip);
-	AZ(wrk->do_gunzip);
-	AZ(wrk->do_esi);
 	AZ(wrk->obj);
 	AZ(wrk->objcore);
 
@@ -1713,9 +1706,6 @@ CNT_Session(struct sess *sp)
 	AZ(wrk->obj);
 	AZ(wrk->objcore);
 	AZ(wrk->do_stream);
-	AZ(wrk->do_gzip);
-	AZ(wrk->do_gunzip);
-	AZ(wrk->do_esi);
 #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 6c8a16f..518c5a9 100644
--- a/bin/varnishd/cache/cache_esi_deliver.c
+++ b/bin/varnishd/cache/cache_esi_deliver.c
@@ -91,9 +91,6 @@ ved_include(struct sess *sp, const char *src, const char *host)
 	/* Client content already taken care of */
 	http_Unset(sp->http, H_Content_Length);
 
-	sp->wrk->do_esi = 0;
-	sp->wrk->do_gzip = 0;
-	sp->wrk->do_gunzip = 0;
 	sp->wrk->do_stream = 0;
 
 	sxid = sp->xid;
diff --git a/bin/varnishd/cache/cache_esi_fetch.c b/bin/varnishd/cache/cache_esi_fetch.c
index e0765b6..aea28ed 100644
--- a/bin/varnishd/cache/cache_esi_fetch.c
+++ b/bin/varnishd/cache/cache_esi_fetch.c
@@ -304,10 +304,10 @@ vfp_esi_begin(struct worker *w, size_t estimate)
 	CHECK_OBJ_NOTNULL(w->busyobj, BUSYOBJ_MAGIC);
 
 	AZ(w->busyobj->vgz_rx);
-	if (w->busyobj->is_gzip && w->do_gunzip) {
+	if (w->busyobj->is_gzip && w->busyobj->do_gunzip) {
 		w->busyobj->vgz_rx = VGZ_NewUngzip(w, "U F E");
 		VEP_Init(w, NULL);
-	} else if (w->busyobj->is_gunzip && w->do_gzip) {
+	} else if (w->busyobj->is_gunzip && w->busyobj->do_gzip) {
 		ALLOC_OBJ(vef, VEF_MAGIC);
 		AN(vef);
 		vef->vgz = VGZ_NewGzip(w, "G F E");
@@ -340,9 +340,9 @@ vfp_esi_bytes(struct worker *w, struct http_conn *htc, ssize_t bytes)
 	AZ(w->busyobj->fetch_failed);
 	AN(w->busyobj->vep);
 	assert(&w->busyobj->htc == htc);
-	if (w->busyobj->is_gzip && w->do_gunzip)
+	if (w->busyobj->is_gzip && w->busyobj->do_gunzip)
 		i = vfp_esi_bytes_gu(w, htc, bytes);
-	else if (w->busyobj->is_gunzip && w->do_gzip)
+	else if (w->busyobj->is_gunzip && w->busyobj->do_gzip)
 		i = vfp_esi_bytes_ug(w, htc, bytes);
 	else if (w->busyobj->is_gzip)
 		i = vfp_esi_bytes_gg(w, htc, bytes);
diff --git a/bin/varnishd/cache/cache_panic.c b/bin/varnishd/cache/cache_panic.c
index 85fcae0..718a686 100644
--- a/bin/varnishd/cache/cache_panic.c
+++ b/bin/varnishd/cache/cache_panic.c
@@ -213,6 +213,9 @@ pan_busyobj(const struct busyobj *bo)
 	VSB_printf(pan_vsp, "  busyobj = %p {\n", bo);
 	if (bo->is_gzip)	VSB_printf(pan_vsp, "    is_gzip\n");
 	if (bo->is_gunzip)	VSB_printf(pan_vsp, "    is_gunzip\n");
+	if (bo->do_gzip)	VSB_printf(pan_vsp, "    do_gzip\n");
+	if (bo->do_gunzip)	VSB_printf(pan_vsp, "    do_gunzip\n");
+	if (bo->do_esi)		VSB_printf(pan_vsp, "    do_esi\n");
 	VSB_printf(pan_vsp, "    bodystatus = %d,\n", bo->body_status);
 	VSB_printf(pan_vsp, "    },\n");
 }
@@ -256,9 +259,6 @@ pan_sess(const struct sess *sp)
 
 	VSB_printf(pan_vsp, "  flags = ");
 	if (sp->wrk->do_stream)	VSB_printf(pan_vsp, " do_stream");
-	if (sp->wrk->do_gzip)	VSB_printf(pan_vsp, " do_gzip");
-	if (sp->wrk->do_gunzip)	VSB_printf(pan_vsp, " do_gunzip");
-	if (sp->wrk->do_esi)	VSB_printf(pan_vsp, " do_esi");
 	if (sp->wrk->do_close)	VSB_printf(pan_vsp, " do_close");
 	VSB_printf(pan_vsp, "\n");
 	pan_busyobj(sp->wrk->busyobj);
diff --git a/bin/varnishd/cache/cache_vrt_var.c b/bin/varnishd/cache/cache_vrt_var.c
index b889d69..adf1017 100644
--- a/bin/varnishd/cache/cache_vrt_var.c
+++ b/bin/varnishd/cache/cache_vrt_var.c
@@ -194,9 +194,9 @@ VRT_r_##dir##_##onm(const struct sess *sp)				\
 	return (sp->wrk->field);					\
 }
 
-VBERESP(beresp, unsigned, do_esi, do_esi)
-VBERESP(beresp, unsigned, do_gzip, do_gzip)
-VBERESP(beresp, unsigned, do_gunzip, do_gunzip)
+VBERESP(beresp, unsigned, do_esi, busyobj->do_esi)
+VBERESP(beresp, unsigned, do_gzip, busyobj->do_gzip)
+VBERESP(beresp, unsigned, do_gunzip, busyobj->do_gunzip)
 VBERESP(beresp, unsigned, do_stream, do_stream)
 
 /*--------------------------------------------------------------------*/



More information about the varnish-commit mailing list