[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