[experimental-ims] 2d49712 Change FetchError() to take busyobj as arg.

Geoff Simmons geoff at varnish-cache.org
Tue Feb 14 17:49:35 CET 2012


commit 2d49712fb096255ae1178275c3a0a8c955142853
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date:   Tue Feb 14 11:00:54 2012 +0000

    Change FetchError() to take busyobj as arg.

diff --git a/bin/varnishd/cache/cache.h b/bin/varnishd/cache/cache.h
index 8ff3688..50d9541 100644
--- a/bin/varnishd/cache/cache.h
+++ b/bin/varnishd/cache/cache.h
@@ -757,8 +757,8 @@ int EXP_NukeOne(struct worker *w, struct lru *lru);
 
 /* cache_fetch.c */
 struct storage *FetchStorage(struct worker *w, ssize_t sz);
-int FetchError(const struct worker *w, const char *error);
-int FetchError2(const struct worker *w, const char *error, const char *more);
+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 object *obj);
 int FetchReqBody(const struct sess *sp, int sendbody);
diff --git a/bin/varnishd/cache/cache_esi_fetch.c b/bin/varnishd/cache/cache_esi_fetch.c
index 620082d..45bfa86 100644
--- a/bin/varnishd/cache/cache_esi_fetch.c
+++ b/bin/varnishd/cache/cache_esi_fetch.c
@@ -387,7 +387,7 @@ vfp_esi_end(struct worker *wrk)
 	retval = bo->fetch_failed;
 
 	if (bo->vgz_rx != NULL && VGZ_Destroy(&bo->vgz_rx, -1) != VGZ_END)
-		retval = FetchError(wrk, "Gunzip+ESI Failed at the very end");
+		retval = FetchError(bo, "Gunzip+ESI Failed at the very end");
 
 	vsb = VEP_Finish(wrk);
 
@@ -402,7 +402,7 @@ vfp_esi_end(struct worker *wrk)
 				    VSB_data(vsb), l);
 				bo->fetch_obj->esidata->len = l;
 			} else {
-				retval = FetchError(wrk,
+				retval = FetchError(bo,
 				    "Could not allocate storage for esidata");
 			}
 		}
@@ -415,7 +415,7 @@ vfp_esi_end(struct worker *wrk)
 	if (vef->vgz != NULL) {
 		VGZ_UpdateObj(vef->vgz, bo->fetch_obj);
 		if (VGZ_Destroy(&vef->vgz,  -1) != VGZ_END)
-			retval = FetchError(wrk,
+			retval = FetchError(bo,
 			    "ESI+Gzip Failed at the very end");
 	}
 	if (vef->ibuf != NULL)
diff --git a/bin/varnishd/cache/cache_fetch.c b/bin/varnishd/cache/cache_fetch.c
index 8b94fd7..2924130 100644
--- a/bin/varnishd/cache/cache_fetch.c
+++ b/bin/varnishd/cache/cache_fetch.c
@@ -52,25 +52,24 @@ static unsigned fetchfrag;
  */
 
 int
-FetchError2(const struct worker *wrk, const char *error, const char *more)
+FetchError2(struct busyobj *bo, const char *error, const char *more)
 {
 
-	CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
-	if (!wrk->busyobj->fetch_failed) {
+	CHECK_OBJ_NOTNULL(bo, BUSYOBJ_MAGIC);
+	if (!bo->fetch_failed) {
 		if (more == NULL)
-			VSLB(wrk->busyobj, SLT_FetchError, "%s", error);
+			VSLB(bo, SLT_FetchError, "%s", error);
 		else
-			VSLB(wrk->busyobj, SLT_FetchError, "%s: %s", error,
-			    more);
+			VSLB(bo, SLT_FetchError, "%s: %s", error, more);
 	}
-	wrk->busyobj->fetch_failed = 1;
+	bo->fetch_failed = 1;
 	return (-1);
 }
 
 int
-FetchError(const struct worker *wrk, const char *error)
+FetchError(struct busyobj *bo, const char *error)
 {
-	return(FetchError2(wrk, error, NULL));
+	return(FetchError2(bo, error, NULL));
 }
 
 /*--------------------------------------------------------------------
@@ -192,7 +191,7 @@ FetchStorage(struct worker *wrk, ssize_t sz)
 		l = cache_param->fetch_chunksize;
 	st = STV_alloc(wrk, l);
 	if (st == NULL) {
-		(void)FetchError(wrk, "Could not get storage");
+		(void)FetchError(wrk->busyobj, "Could not get storage");
 		return (NULL);
 	}
 	AZ(st->len);
@@ -233,13 +232,13 @@ fetch_straight(struct worker *wrk, struct http_conn *htc, ssize_t cl)
 	assert(wrk->busyobj->body_status == BS_LENGTH);
 
 	if (cl < 0) {
-		return (FetchError(wrk, "straight length field bogus"));
+		return (FetchError(wrk->busyobj, "straight length field bogus"));
 	} else if (cl == 0)
 		return (0);
 
 	i = wrk->busyobj->vfp->bytes(wrk, htc, cl);
 	if (i <= 0)
-		return (FetchError(wrk, "straight insufficient bytes"));
+		return (FetchError(wrk->busyobj, "straight insufficient bytes"));
 	return (0);
 }
 
@@ -266,7 +265,7 @@ fetch_chunked(struct worker *wrk, struct http_conn *htc)
 		} while (vct_islws(buf[0]));
 
 		if (!vct_ishex(buf[0]))
-			return (FetchError(wrk,"chunked header non-hex"));
+			return (FetchError(wrk->busyobj, "chunked header non-hex"));
 
 		/* Collect hex digits, skipping leading zeros */
 		for (u = 1; u < sizeof buf; u++) {
@@ -279,7 +278,7 @@ fetch_chunked(struct worker *wrk, struct http_conn *htc)
 		}
 
 		if (u >= sizeof buf)
-			return (FetchError(wrk,"chunked header too long"));
+			return (FetchError(wrk->busyobj,"chunked header too long"));
 
 		/* Skip trailing white space */
 		while(vct_islws(buf[u]) && buf[u] != '\n')
@@ -287,12 +286,12 @@ fetch_chunked(struct worker *wrk, struct http_conn *htc)
 				return (-1);
 
 		if (buf[u] != '\n')
-			return (FetchError(wrk,"chunked header no NL"));
+			return (FetchError(wrk->busyobj,"chunked header no NL"));
 
 		buf[u] = '\0';
 		cl = fetch_number(buf, 16);
 		if (cl < 0)
-			return (FetchError(wrk,"chunked header number syntax"));
+			return (FetchError(wrk->busyobj,"chunked header number syntax"));
 
 		if (cl > 0 && wrk->busyobj->vfp->bytes(wrk, htc, cl) <= 0)
 			return (-1);
@@ -303,7 +302,7 @@ fetch_chunked(struct worker *wrk, struct http_conn *htc)
 		if (buf[0] == '\r' && HTC_Read( htc, buf, 1) <= 0)
 			return (-1);
 		if (buf[0] != '\n')
-			return (FetchError(wrk,"chunked tail no NL"));
+			return (FetchError(wrk->busyobj,"chunked tail no NL"));
 	} while (cl > 0);
 	return (0);
 }
diff --git a/bin/varnishd/cache/cache_gzip.c b/bin/varnishd/cache/cache_gzip.c
index 5901930..c4eab44 100644
--- a/bin/varnishd/cache/cache_gzip.c
+++ b/bin/varnishd/cache/cache_gzip.c
@@ -482,7 +482,7 @@ vfp_gunzip_bytes(struct worker *wrk, struct http_conn *htc, ssize_t bytes)
 			return(-1);
 		i = VGZ_Gunzip(vg, &dp, &dl);
 		if (i != VGZ_OK && i != VGZ_END)
-			return(FetchError(wrk, "Gunzip data error"));
+			return(FetchError(wrk->busyobj, "Gunzip data error"));
 		wrk->busyobj->fetch_obj->len += dl;
 		if (wrk->busyobj->do_stream)
 			RES_StreamPoll(wrk);
@@ -506,7 +506,8 @@ vfp_gunzip_end(struct worker *wrk)
 		return(0);
 	}
 	if (VGZ_Destroy(&vg, -1) != VGZ_END)
-		return(FetchError(wrk, "Gunzip error at the very end"));
+		return(FetchError(wrk->busyobj,
+		    "Gunzip error at the very end"));
 	return (0);
 }
 
@@ -599,7 +600,7 @@ vfp_gzip_end(struct worker *wrk)
 		RES_StreamPoll(wrk);
 	VGZ_UpdateObj(vg, wrk->busyobj->fetch_obj);
 	if (VGZ_Destroy(&vg, -1) != VGZ_END)
-		return(FetchError(wrk, "Gzip error at the very end"));
+		return(FetchError(wrk->busyobj, "Gzip error at the very end"));
 	return (0);
 }
 
@@ -664,9 +665,10 @@ vfp_testgzip_bytes(struct worker *wrk, struct http_conn *htc, ssize_t bytes)
 			VGZ_Obuf(vg, vg->m_buf, vg->m_sz);
 			i = VGZ_Gunzip(vg, &dp, &dl);
 			if (i == VGZ_END && !VGZ_IbufEmpty(vg))
-				return(FetchError(wrk, "Junk after gzip data"));
+				return(FetchError(wrk->busyobj,
+				    "Junk after gzip data"));
 			if (i != VGZ_OK && i != VGZ_END)
-				return(FetchError2(wrk,
+				return(FetchError2(wrk->busyobj,
 				    "Invalid Gzip data", vg->vz.msg));
 		}
 	}
@@ -690,7 +692,8 @@ vfp_testgzip_end(struct worker *wrk)
 	}
 	VGZ_UpdateObj(vg, wrk->busyobj->fetch_obj);
 	if (VGZ_Destroy(&vg, -1) != VGZ_END)
-		return(FetchError(wrk, "TestGunzip error at the very end"));
+		return(FetchError(wrk->busyobj,
+		    "TestGunzip error at the very end"));
 	return (0);
 }
 



More information about the varnish-commit mailing list