[experimental-ims] a2921da Move h_content_length from worker to busyobj
Geoff Simmons
geoff at varnish-cache.org
Mon Jan 9 21:52:45 CET 2012
commit a2921da31f78a108322ce69bc5d476e09dbb29a6
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date: Wed Nov 30 07:52:14 2011 +0000
Move h_content_length from worker to busyobj
diff --git a/bin/varnishd/cache/cache.h b/bin/varnishd/cache/cache.h
index 819e701..ff9dcea 100644
--- a/bin/varnishd/cache/cache.h
+++ b/bin/varnishd/cache/cache.h
@@ -332,8 +332,6 @@ struct worker {
struct http *beresp;
struct vbc *vbc;
- char *h_content_length;
-
/* Stream state */
struct stream_ctx *sctx;
@@ -504,6 +502,7 @@ struct busyobj {
struct vef_priv *vef_priv;
unsigned should_close;
+ char *h_content_length;
unsigned do_esi;
unsigned do_gzip;
diff --git a/bin/varnishd/cache/cache_center.c b/bin/varnishd/cache/cache_center.c
index 6bda81f..501293d 100644
--- a/bin/varnishd/cache/cache_center.c
+++ b/bin/varnishd/cache/cache_center.c
@@ -188,7 +188,8 @@ cnt_prepresp(struct sess *sp)
wrk->res_mode |= RES_LEN;
if (wrk->busyobj != NULL &&
- (wrk->h_content_length != NULL || !wrk->busyobj->do_stream) &&
+ (wrk->busyobj->h_content_length != NULL ||
+ !wrk->busyobj->do_stream) &&
!wrk->busyobj->do_gzip && !wrk->busyobj->do_gunzip)
wrk->res_mode |= RES_LEN;
@@ -256,7 +257,6 @@ cnt_prepresp(struct sess *sp)
AZ(wrk->obj);
sp->restarts++;
sp->director = NULL;
- wrk->h_content_length = NULL;
http_Setup(wrk->bereq, NULL);
http_Setup(wrk->beresp, NULL);
http_Setup(wrk->resp, NULL);
@@ -469,7 +469,6 @@ cnt_error(struct sess *sp)
if (wrk->obj == NULL) {
sp->doclose = "Out of objects";
sp->director = NULL;
- wrk->h_content_length = NULL;
http_Setup(wrk->beresp, NULL);
http_Setup(wrk->bereq, NULL);
sp->step = STP_DONE;
@@ -567,7 +566,6 @@ cnt_fetch(struct sess *sp)
AN(sp->director);
AZ(wrk->vbc);
- AZ(wrk->h_content_length);
AZ(wrk->busyobj->should_close);
AZ(wrk->storage_hint);
@@ -648,7 +646,6 @@ cnt_fetch(struct sess *sp)
}
http_Setup(wrk->bereq, NULL);
http_Setup(wrk->beresp, NULL);
- wrk->h_content_length = NULL;
sp->director = NULL;
wrk->storage_hint = NULL;
@@ -880,8 +877,6 @@ cnt_fetchbody(struct sess *sp)
/* Use unmodified headers*/
i = FetchBody(wrk, wrk->obj);
- wrk->h_content_length = NULL;
-
http_Setup(wrk->bereq, NULL);
http_Setup(wrk->beresp, NULL);
wrk->busyobj->vfp = NULL;
@@ -950,8 +945,6 @@ cnt_streambody(struct sess *sp)
i = FetchBody(wrk, wrk->obj);
- wrk->h_content_length = NULL;
-
http_Setup(wrk->bereq, NULL);
http_Setup(wrk->beresp, NULL);
wrk->busyobj->vfp = NULL;
diff --git a/bin/varnishd/cache/cache_fetch.c b/bin/varnishd/cache/cache_fetch.c
index 16509f0..38a2cf3 100644
--- a/bin/varnishd/cache/cache_fetch.c
+++ b/bin/varnishd/cache/cache_fetch.c
@@ -525,7 +525,7 @@ FetchBody(struct worker *w, struct object *obj)
mklen = 1;
break;
case BS_LENGTH:
- cl = fetch_number( w->h_content_length, 10);
+ cl = fetch_number( w->busyobj->h_content_length, 10);
w->busyobj->vfp->begin(w, cl > 0 ? cl : 0);
cls = fetch_straight(w, htc, cl);
mklen = 1;
diff --git a/bin/varnishd/cache/cache_response.c b/bin/varnishd/cache/cache_response.c
index 39c0ee6..7c63d51 100644
--- a/bin/varnishd/cache/cache_response.c
+++ b/bin/varnishd/cache/cache_response.c
@@ -345,9 +345,9 @@ RES_StreamStart(struct sess *sp)
http_Unset(sp->wrk->resp, H_Content_Encoding);
if (!(sp->wrk->res_mode & RES_CHUNKED) &&
- sp->wrk->h_content_length != NULL)
+ sp->wrk->busyobj->h_content_length != NULL)
http_PrintfHeader(sp->wrk, sp->vsl_id, sp->wrk->resp,
- "Content-Length: %s", sp->wrk->h_content_length);
+ "Content-Length: %s", sp->wrk->busyobj->h_content_length);
sp->wrk->acct_tmp.hdrbytes +=
http_Write(sp->wrk, sp->vsl_id, sp->wrk->resp, 1);
diff --git a/bin/varnishd/cache/cache_rfc2616.c b/bin/varnishd/cache/cache_rfc2616.c
index c2a795a..599ffbb 100644
--- a/bin/varnishd/cache/cache_rfc2616.c
+++ b/bin/varnishd/cache/cache_rfc2616.c
@@ -239,7 +239,8 @@ RFC2616_Body(const struct sess *sp)
return (BS_ERROR);
}
- if (http_GetHdr(hp, H_Content_Length, &sp->wrk->h_content_length)) {
+ if (http_GetHdr(hp, H_Content_Length,
+ &sp->wrk->busyobj->h_content_length)) {
sp->wrk->stats.fetch_length++;
return (BS_LENGTH);
}
More information about the varnish-commit
mailing list