[master] a2921da Move h_content_length from worker to busyobj

Poul-Henning Kamp phk at varnish-cache.org
Wed Nov 30 08:52:38 CET 2011


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