[master] 4f435ce Polish

Poul-Henning Kamp phk at varnish-cache.org
Fri Sep 6 09:00:39 CEST 2013


commit 4f435cef4953e8bef81e89049d4a597d074c4c57
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date:   Thu Sep 5 16:41:44 2013 +0000

    Polish

diff --git a/bin/varnishd/cache/cache.h b/bin/varnishd/cache/cache.h
index d6ae10d..ab827d3 100644
--- a/bin/varnishd/cache/cache.h
+++ b/bin/varnishd/cache/cache.h
@@ -278,7 +278,12 @@ extern struct vfp vfp_esi;
 
 /* Deliver processors ------------------------------------------------*/
 
-typedef int vdp_bytes(struct req *, int flush, void *ptr, ssize_t len);
+enum vdp_action {
+	VDP_NULL,
+	VDP_FLUSH,
+	VDP_FINISH,
+};
+typedef int vdp_bytes(struct req *, enum vdp_action, void *ptr, ssize_t len);
 
 /*--------------------------------------------------------------------*/
 
@@ -837,7 +842,7 @@ int HTTP1_IterateReqBody(struct req *req, req_body_iter_f *func, void *priv);
 void V1D_Deliver(struct req *);
 
 static inline int
-VDP_bytes(struct req *req, int flush, void *ptr, ssize_t len)
+VDP_bytes(struct req *req, enum vdp_action act, void *ptr, ssize_t len)
 {
 	int i, retval;
 
@@ -846,7 +851,7 @@ VDP_bytes(struct req *req, int flush, void *ptr, ssize_t len)
 	/* Call the present layer, while pointing to the next layer down */
 	i = req->vdp_nxt--;
 	assert(i >= 0 && i < N_VDPS);
-	retval = req->vdps[i](req, flush, ptr, len);
+	retval = req->vdps[i](req, act, ptr, len);
 	req->vdp_nxt++;
 	return (retval);
 }
diff --git a/bin/varnishd/cache/cache_gzip.c b/bin/varnishd/cache/cache_gzip.c
index 6bbf07a..9f42529 100644
--- a/bin/varnishd/cache/cache_gzip.c
+++ b/bin/varnishd/cache/cache_gzip.c
@@ -315,7 +315,7 @@ VGZ_WrwInit(struct vgz *vg)
  */
 
 int __match_proto__(vdp_bytes)
-VDP_gunzip(struct req *req, int flush, void *ptr, ssize_t len)
+VDP_gunzip(struct req *req, enum vdp_action act, void *ptr, ssize_t len)
 {
 	enum vgzret_e vr;
 	size_t dl;
@@ -331,8 +331,8 @@ VDP_gunzip(struct req *req, int flush, void *ptr, ssize_t len)
 	AN(vg->m_buf);
 
 	if (len == 0) {
-		AN(flush);
-		return (VDP_bytes(req, 1, vg->m_buf, vg->m_len));
+		AN(act > VDP_NULL);
+		return (VDP_bytes(req, act, vg->m_buf, vg->m_len));
 	}
 
 	VGZ_Ibuf(vg, ptr, len);
@@ -346,7 +346,7 @@ VDP_gunzip(struct req *req, int flush, void *ptr, ssize_t len)
 		if (vr < VGZ_OK)
 			return (-1);
 		if (vg->m_len == vg->m_sz || vr == VGZ_STUCK) {
-			if (VDP_bytes(req, 1, vg->m_buf, vg->m_len))
+			if (VDP_bytes(req, VDP_FLUSH, vg->m_buf, vg->m_len))
 				return (-1);
 			vg->m_len = 0;
 			VGZ_Obuf(vg, vg->m_buf, vg->m_sz);
@@ -389,7 +389,7 @@ VGZ_WrwGunzip(struct req *req, struct vgz *vg, const void *ibuf,
 		if (vr < VGZ_OK)
 			return (vr);
 		if (vg->m_len == vg->m_sz || vr == VGZ_STUCK) {
-			(void)VDP_bytes(req, 1, vg->m_buf, vg->m_len);
+			(void)VDP_bytes(req, VDP_FLUSH, vg->m_buf, vg->m_len);
 			vg->m_len = 0;
 			VGZ_Obuf(vg, vg->m_buf, vg->m_sz);
 		}
@@ -414,7 +414,7 @@ VGZ_WrwFlush(struct req *req, struct vgz *vg)
 	if (vg->m_len ==  0)
 		return;
 
-	(void)VDP_bytes(req, 1, vg->m_buf, vg->m_len);
+	(void)VDP_bytes(req, VDP_FLUSH, vg->m_buf, vg->m_len);
 	vg->m_len = 0;
 	VGZ_Obuf(vg, vg->m_buf, vg->m_sz);
 }
diff --git a/bin/varnishd/cache/cache_http1_deliver.c b/bin/varnishd/cache/cache_http1_deliver.c
index 1d111e9..c57b977 100644
--- a/bin/varnishd/cache/cache_http1_deliver.c
+++ b/bin/varnishd/cache/cache_http1_deliver.c
@@ -36,7 +36,7 @@
 /*--------------------------------------------------------------------*/
 
 static int __match_proto__(vdp_bytes)
-v1d_bytes(struct req *req, int flush, void *ptr, ssize_t len)
+v1d_bytes(struct req *req, enum vdp_action act, void *ptr, ssize_t len)
 {
 	ssize_t wl = 0;
 
@@ -48,7 +48,7 @@ v1d_bytes(struct req *req, int flush, void *ptr, ssize_t len)
 		wl = WRW_Write(req->wrk, ptr, len);
 	if (wl > 0)
 		req->acct_req.bodybytes += wl;
-	if (flush && WRW_Flush(req->wrk))
+	if (act > VDP_NULL && WRW_Flush(req->wrk))
 		return (-1);
 	if (len != wl)
 		return (-1);
@@ -58,7 +58,7 @@ v1d_bytes(struct req *req, int flush, void *ptr, ssize_t len)
 /*--------------------------------------------------------------------*/
 
 static int __match_proto__(vdp_bytes)
-v1d_range_bytes(struct req *req, int flush, void *ptr, ssize_t len)
+v1d_range_bytes(struct req *req, enum vdp_action act, void *ptr, ssize_t len)
 {
 	int retval = 0;
 	ssize_t l;
@@ -76,8 +76,8 @@ v1d_range_bytes(struct req *req, int flush, void *ptr, ssize_t len)
 	l = req->range_high - req->range_off;
 	if (l > len)
 		l = len;
-	if (flush || l > 0)
-		retval = VDP_bytes(req, flush, p, l);
+	if (act > VDP_NULL || l > 0)
+		retval = VDP_bytes(req, act, p, l);
 	req->range_off += len;
 	return (retval);
 }
@@ -165,10 +165,10 @@ v1d_WriteDirObj(struct req *req)
 	XXXAN(oi);
 
 	while (ObjIter(oi, &ptr, &len)) {
-		if (VDP_bytes(req, 0,  ptr, len))
+		if (VDP_bytes(req, VDP_NULL,  ptr, len))
 			break;
 	}
-	(void)VDP_bytes(req, 1,  NULL, 0);
+	(void)VDP_bytes(req, VDP_FINISH,  NULL, 0);
 	ObjIterEnd(&oi);
 }
 
@@ -290,15 +290,9 @@ V1D_Deliver(struct req *req)
 		ESI_Deliver(req);
 	} else if (req->res_mode & RES_ESI_CHILD && req->gzip_resp) {
 		ESI_DeliverChild(req);
-	} else if (req->res_mode & RES_ESI_CHILD &&
-	    !req->gzip_resp && req->obj->gziped) {
-		VDP_push(req, VDP_gunzip);
-		req->vgz = VGZ_NewUngzip(req->vsl, "U D -");
-		AZ(VGZ_WrwInit(req->vgz));
-		v1d_WriteDirObj(req);
-		(void)VGZ_Destroy(&req->vgz);
-		VDP_pop(req, VDP_gunzip);
-	} else if (req->res_mode & RES_GUNZIP) {
+	} else if (req->res_mode & RES_GUNZIP ||
+	    (req->res_mode & RES_ESI_CHILD &&
+	    !req->gzip_resp && req->obj->gziped)) {
 		VDP_push(req, VDP_gunzip);
 		req->vgz = VGZ_NewUngzip(req->vsl, "U D -");
 		AZ(VGZ_WrwInit(req->vgz));



More information about the varnish-commit mailing list