[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