]> err.no Git - varnish/commit
Overhaul the ESI parser in light of #433 and the prospect of future
authorphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Tue, 3 Feb 2009 21:49:26 +0000 (21:49 +0000)
committerphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Tue, 3 Feb 2009 21:49:26 +0000 (21:49 +0000)
commit51acefb98171acc0a3e4a9d966f751fd3c02f9ea
treec5d6b98133f3e0b811ee5c86becf17cb19e839c7
parent3a692a994a190620a0c257a667d6ac16e43070e7
Overhaul the ESI parser in light of #433 and the prospect of future
addition of features to the ESI code.

The particular situation in #433 arises because a XML comment is not
bounded in length, the same way as an <esi:include...> element naturally
is.  This opens the window for trouble when large sections of XML is
commented out for some reason or another.

Bite the bullet and create a "storage-pointer" consisting of a pointer
to a storage segment and a pointer into that segment.

Add a main-loop which uses these pointers to walks over the entire
object, looking for stuff we care about, and handle each appropriately.

In addition to coping properly with the situation in #433, this code is
also close to 100 lines shorter and has a more logical structure.

The downside is that it is isn't quite as memory-access-alergic as the
previous version.  (I challenge anybody to measure the effect of this.)

Fixes: #433
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3575 d4fa192b-c00b-0410-8231-f00ffab90ce4
varnish-cache/bin/varnishd/cache_vrt_esi.c