r2274 - trunk/varnish-cache/bin/varnishd

phk at projects.linpro.no phk at projects.linpro.no
Tue Nov 20 17:43:09 CET 2007


Author: phk
Date: 2007-11-20 17:43:09 +0100 (Tue, 20 Nov 2007)
New Revision: 2274

Modified:
   trunk/varnish-cache/bin/varnishd/cache_vrt_esi.c
Log:
Pass a txt instead of the raw storage into the esi_parser


Modified: trunk/varnish-cache/bin/varnishd/cache_vrt_esi.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/cache_vrt_esi.c	2007-11-20 16:30:23 UTC (rev 2273)
+++ trunk/varnish-cache/bin/varnishd/cache_vrt_esi.c	2007-11-20 16:43:09 UTC (rev 2274)
@@ -71,7 +71,7 @@
 struct esi_work {
 	struct sess		*sp;
 	size_t			off;
-	struct storage		*st;
+	txt			t;
 	txt			dst;
 	struct esi_bit		*eb;
 	struct esi_bit		*ebl;	/* list of */
@@ -93,14 +93,13 @@
 	txt t;
 
 	if (i == 0) 
-		i = p - ((char *)ew->st->ptr + ew->st->len);
+		i = p - ew->t.b;
 	if (i > 20) {
 		i = 20;
 		ellipsis = 1;
 	}
 	q = buf;
-	q += sprintf(buf, "at %zd: %s \"",
-	    ew->off + (p - (char*)ew->st->ptr), err);
+	q += sprintf(buf, "at %zd: %s \"", ew->off + (p - ew->t.b), err);
 	while (i > 0) {
 		if (*p >= ' ' && *p <= '~') {
 			*q++ = *p;
@@ -347,8 +346,7 @@
 	int celem;		/* closing element */
 	int i;
 
-	t.b = (char *)ew->st->ptr;
-	t.e = t.b + ew->st->len;
+	t = ew->t;
 	ew->dst.b = t.b;
 	ew->dst.e = t.b;
 	o.b = t.b;
@@ -574,7 +572,8 @@
 	ew->off = 1;
 
 	VTAILQ_FOREACH(st, &sp->obj->store, list) {
-		ew->st = st;
+		ew->t.b = (void *)st->ptr;
+		ew->t.e = ew->t.b + st->len;
 		i = esi_parse(ew);
 		ew->off += st->len;
 		if (i < st->len) {




More information about the varnish-commit mailing list