[master] 071d905 Eliminate the returnvalue from FetchBody(), rely on bo->state instead

Poul-Henning Kamp phk at varnish-cache.org
Mon Mar 5 15:19:32 CET 2012


commit 071d9050d5285bc8caa511c7664f00051f844496
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date:   Mon Mar 5 14:19:10 2012 +0000

    Eliminate the returnvalue from FetchBody(), rely on bo->state instead

diff --git a/bin/varnishd/cache/cache.h b/bin/varnishd/cache/cache.h
index bea32a2..63ea682 100644
--- a/bin/varnishd/cache/cache.h
+++ b/bin/varnishd/cache/cache.h
@@ -755,7 +755,7 @@ struct storage *FetchStorage(struct busyobj *, ssize_t sz);
 int FetchError(struct busyobj *, const char *error);
 int FetchError2(struct busyobj *, const char *error, const char *more);
 int FetchHdr(struct sess *sp, int need_host_hdr, int sendbody);
-int FetchBody(struct worker *w, struct busyobj *bo);
+void FetchBody(struct worker *w, struct busyobj *bo);
 int FetchReqBody(const struct sess *sp, int sendbody);
 void Fetch_Init(void);
 
diff --git a/bin/varnishd/cache/cache_center.c b/bin/varnishd/cache/cache_center.c
index 9cbc905..d13fc46 100644
--- a/bin/varnishd/cache/cache_center.c
+++ b/bin/varnishd/cache/cache_center.c
@@ -895,7 +895,6 @@ DOT fetchbody:out -> prepresp [style=bold,color=blue]
 static int
 cnt_fetchbody(struct sess *sp, struct worker *wrk, struct req *req)
 {
-	int i;
 	struct busyobj *bo;
 
 	CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
@@ -904,8 +903,7 @@ cnt_fetchbody(struct sess *sp, struct worker *wrk, struct req *req)
 	bo = req->busyobj;
 	CHECK_OBJ_NOTNULL(bo, BUSYOBJ_MAGIC);
 
-	/* Use unmodified headers*/
-	i = FetchBody(wrk, bo);
+	FetchBody(wrk, bo);
 	bo->fetch_obj = NULL;
 
 	http_Teardown(bo->bereq);
@@ -915,7 +913,7 @@ cnt_fetchbody(struct sess *sp, struct worker *wrk, struct req *req)
 	AZ(bo->vbc);
 	AN(req->director);
 
-	if (i) {
+	if (bo->state == BOS_FAILED) {
 		HSH_Drop(wrk, &sp->req->obj);
 		VBO_DerefBusyObj(wrk, &req->busyobj);
 		AZ(req->obj);
diff --git a/bin/varnishd/cache/cache_fetch.c b/bin/varnishd/cache/cache_fetch.c
index fd70d07..4fc0f8e 100644
--- a/bin/varnishd/cache/cache_fetch.c
+++ b/bin/varnishd/cache/cache_fetch.c
@@ -76,21 +76,20 @@ FetchError(struct busyobj *bo, const char *error)
  * VFP method functions
  */
 
-static int
+static void
 VFP_Begin(struct busyobj *bo, size_t estimate)
 {
+
 	CHECK_OBJ_NOTNULL(bo, BUSYOBJ_MAGIC);
 	AN(bo->vfp);
 
 	bo->vfp->begin(bo, estimate);
-	if (bo->state == BOS_FAILED)
-		return (-1);
-	return (0);
 }
 
 static int
 VFP_Bytes(struct busyobj *bo, struct http_conn *htc, ssize_t sz)
 {
+
 	CHECK_OBJ_NOTNULL(bo, BUSYOBJ_MAGIC);
 	AN(bo->vfp);
 	CHECK_OBJ_NOTNULL(htc, HTTP_CONN_MAGIC);
@@ -99,7 +98,7 @@ VFP_Bytes(struct busyobj *bo, struct http_conn *htc, ssize_t sz)
 	return (bo->vfp->bytes(bo, htc, sz));
 }
 
-static int
+static void
 VFP_End(struct busyobj *bo)
 {
 	int i;
@@ -110,8 +109,6 @@ VFP_End(struct busyobj *bo)
 	i = bo->vfp->end(bo);
 	if (i)
 		assert(bo->state == BOS_FAILED);
-	return (i);
-
 }
 
 
@@ -351,16 +348,13 @@ fetch_chunked(struct busyobj *bo, struct http_conn *htc)
 
 /*--------------------------------------------------------------------*/
 
-static int
+static void
 fetch_eof(struct busyobj *bo, struct http_conn *htc)
 {
-	int i;
 
 	assert(bo->body_status == BS_EOF);
-	i = VFP_Bytes(bo, htc, SSIZE_MAX);
-	if (i < 0)
-		return (FetchError(bo,"eof socket fail"));
-	return (0);
+	if (VFP_Bytes(bo, htc, SSIZE_MAX) < 0)
+		(void)FetchError(bo,"eof socket fail");
 }
 
 /*--------------------------------------------------------------------
@@ -535,7 +529,7 @@ FetchHdr(struct sess *sp, int need_host_hdr, int sendbody)
 
 /*--------------------------------------------------------------------*/
 
-int
+void
 FetchBody(struct worker *wrk, struct busyobj *bo)
 {
 	int cls;
@@ -576,42 +570,39 @@ FetchBody(struct worker *wrk, struct busyobj *bo)
 
 	/* XXX: pick up estimate from objdr ? */
 	cl = 0;
+	cls = 0;
 	switch (bo->body_status) {
 	case BS_NONE:
-		cls = 0;
 		mklen = 0;
 		break;
 	case BS_ZERO:
-		cls = 0;
 		mklen = 1;
 		break;
 	case BS_LENGTH:
 		cl = fetch_number(bo->h_content_length, 10);
-		cls = VFP_Begin(bo, cl > 0 ? cl : 0);
-		if (!cls)
+		VFP_Begin(bo, cl > 0 ? cl : 0);
+		if (bo->state == BOS_FETCHING)
 			cls = fetch_straight(bo, htc, cl);
 		mklen = 1;
-		if (VFP_End(bo))
-			cls = -1;
+		VFP_End(bo);
 		break;
 	case BS_CHUNKED:
-		cls = VFP_Begin(bo, cl);
-		if (!cls)
+		VFP_Begin(bo, cl);
+		if (bo->state == BOS_FETCHING)
 			cls = fetch_chunked(bo, htc);
 		mklen = 1;
-		if (VFP_End(bo))
-			cls = -1;
+		VFP_End(bo);
 		break;
 	case BS_EOF:
-		cls = VFP_Begin(bo, cl);
-		if (!cls)
-			cls = fetch_eof(bo, htc);
+		VFP_Begin(bo, cl);
+		if (bo->state == BOS_FETCHING)
+			fetch_eof(bo, htc);
 		mklen = 1;
-		if (VFP_End(bo))
-			cls = -1;
+		cls = 1;
+		VFP_End(bo);
 		break;
 	case BS_ERROR:
-		cls = 1;
+		cls = FetchError(bo, "error incompatible Transfer-Encoding");
 		mklen = 0;
 		break;
 	default:
@@ -631,20 +622,14 @@ FetchBody(struct worker *wrk, struct busyobj *bo)
 	    bo->body_status, body_status(bo->body_status),
 	    cls, mklen);
 
-	if (bo->body_status == BS_ERROR) {
-		VDI_CloseFd(&bo->vbc);
-		bo->stats = NULL;
-		return (__LINE__);
-	}
-
-	if (cls < 0) {
-		assert(bo->state == BOS_FAILED);
+	if (bo->state == BOS_FAILED) {
 		wrk->stats.fetch_failed++;
 		VDI_CloseFd(&bo->vbc);
 		obj->len = 0;
 		bo->stats = NULL;
-		return (__LINE__);
+		return;
 	}
+
 	assert(bo->state == BOS_FETCHING);
 
 	if (cls == 0 && bo->should_close)
@@ -680,7 +665,6 @@ FetchBody(struct worker *wrk, struct busyobj *bo)
 		VDI_RecycleFd(&bo->vbc);
 
 	bo->stats = NULL;
-	return (0);
 }
 
 /*--------------------------------------------------------------------



More information about the varnish-commit mailing list