[master] 2da2ff7 Use VSL_COPT_BATCH in VSL_Dispatch

Martin Blix Grydeland martin at varnish-cache.org
Wed Oct 9 16:03:04 CEST 2013


commit 2da2ff753d853b97010879938073594af53f9515
Author: Martin Blix Grydeland <martin at varnish-software.com>
Date:   Wed Oct 9 14:32:05 2013 +0200

    Use VSL_COPT_BATCH in VSL_Dispatch

diff --git a/lib/libvarnishapi/vsl_dispatch.c b/lib/libvarnishapi/vsl_dispatch.c
index 5038a89..2007f09 100644
--- a/lib/libvarnishapi/vsl_dispatch.c
+++ b/lib/libvarnishapi/vsl_dispatch.c
@@ -1106,8 +1106,13 @@ vslq_raw(struct VSLQ *vslq, VSLQ_dispatch_f *func, void *priv)
 				return (i);
 			AN(vslq->c->rec.ptr);
 			vslq->raw.start = vslq->c->rec;
-			vslq->raw.len = VSL_NEXT(vslq->raw.start.ptr) -
-			    vslq->raw.start.ptr;
+			if (VSL_TAG(vslq->c->rec.ptr) == SLT__Batch)
+				vslq->raw.len = VSL_END(vslq->c->rec.ptr,
+				    VSL_BATCHLEN(vslq->c->rec.ptr)) -
+				    vslq->c->rec.ptr;
+			else
+				vslq->raw.len = VSL_NEXT(vslq->raw.start.ptr) -
+				    vslq->raw.start.ptr;
 			assert(vslq->raw.len > 0);
 			vslq->raw.offset = 0;
 		}
@@ -1116,7 +1121,6 @@ vslq_raw(struct VSLQ *vslq, VSLQ_dispatch_f *func, void *priv)
 		vslq->raw.c.cursor.rec.ptr = NULL;
 		vslq->raw.trans.vxid = VSL_ID(vslq->raw.c.ptr);
 		vslq->raw.offset += VSL_NEXT(vslq->raw.c.ptr) - vslq->raw.c.ptr;
-		assert(VSL_TAG(vslq->raw.c.ptr) != SLT__Batch);
 	} while (VSL_TAG(vslq->raw.c.ptr) == SLT__Batch);
 
 	if (func == NULL)
@@ -1170,7 +1174,7 @@ static int
 vslq_next(struct VSLQ *vslq)
 {
 	struct VSL_cursor *c;
-	int i, batch;
+	int i;
 	enum VSL_tag_e tag;
 	ssize_t len;
 	unsigned vxid;
@@ -1182,9 +1186,7 @@ vslq_next(struct VSLQ *vslq)
 		return (i);
 
 	tag = VSL_TAG(c->rec.ptr);
-	assert(tag != SLT__Batch);
 	if (tag == SLT__Batch) {
-		batch = 1;
 		vxid = VSL_BATCHID(c->rec.ptr);
 		len = VSL_END(c->rec.ptr, VSL_BATCHLEN(c->rec.ptr)) -
 		    c->rec.ptr;
@@ -1192,7 +1194,6 @@ vslq_next(struct VSLQ *vslq)
 			return (i);
 		tag = VSL_TAG(VSL_NEXT(c->rec.ptr));
 	} else {
-		batch = 0;
 		vxid = VSL_ID(c->rec.ptr);
 		len = VSL_NEXT(c->rec.ptr) - c->rec.ptr;
 	}
@@ -1210,8 +1211,6 @@ vslq_next(struct VSLQ *vslq)
 		vtx_append(vslq, vtx, &c->rec, len);
 		vtx_scan(vslq, vtx);
 	}
-	if (batch)
-		AZ(vsl_skip(c, VSL_WORDS(VSL_BATCHLEN(c->rec.ptr))));
 
 	return (i);
 }
diff --git a/lib/libvarnishtools/vut.c b/lib/libvarnishtools/vut.c
index 6510256..8061722 100644
--- a/lib/libvarnishtools/vut.c
+++ b/lib/libvarnishtools/vut.c
@@ -191,7 +191,7 @@ VUT_Setup(void)
 			VUT_Error(1, "Can't open VSM file (%s)",
 			    VSM_Error(VUT.vsm));
 		c = VSL_CursorVSM(VUT.vsl, VUT.vsm,
-		    VUT.d_opt ? 0 : VSL_COPT_TAIL);
+		    (VUT.d_opt ? 0 : VSL_COPT_TAIL) | VSL_COPT_BATCH);
 	}
 	if (c == NULL)
 		VUT_Error(1, "Can't open log (%s)", VSL_Error(VUT.vsl));
@@ -295,7 +295,8 @@ VUT_Main(VSLQ_dispatch_f *func, void *priv)
 				VSM_ResetError(VUT.vsm);
 				continue;
 			}
-			c = VSL_CursorVSM(VUT.vsl, VUT.vsm, VSL_COPT_TAIL);
+			c = VSL_CursorVSM(VUT.vsl, VUT.vsm,
+			    VSL_COPT_TAIL | VSL_COPT_BATCH);
 			if (c == NULL) {
 				VSL_ResetError(VUT.vsl);
 				VSM_Close(VUT.vsm);



More information about the varnish-commit mailing list