Commit 6a24f617 authored by Tollef Fog Heen's avatar Tollef Fog Heen

Merge r3543: Test that we know the purge variable when it is compiled in.



git-svn-id: http://www.varnish-cache.org/svn/branches/2.0@3725 d4fa192b-c00b-0410-8231-f00ffab90ce4
parent 3fbfb293
......@@ -33,6 +33,26 @@ varnish v1 -vcl+backend {
}
} -start
# Trigger syntax check
varnish v1 -badvcl {
backend foo {
.host = "127.0.0.1";
}
sub vcl_recv {
purge (req.foo == req.url);
}
}
# Trigger syntax check
varnish v1 -badvcl {
backend foo {
.host = "127.0.0.1";
}
sub vcl_recv {
purge (req.http. == req.url);
}
}
# Fetch into cache
client c1 {
txreq -url "/foo"
......
......@@ -32,6 +32,7 @@
#include "config.h"
#include <stdio.h>
#include <string.h>
#include "vsb.h"
......@@ -347,13 +348,23 @@ parse_unset(struct tokenlist *tl)
/*--------------------------------------------------------------------*/
static const struct purge_var {
const char *name;
unsigned flag;
} purge_var[] = {
#define PVAR(a, b, c) { a, b },
#include "purge_vars.h"
#undef PVAR
{ 0, 0 }
};
static void
parse_purge(struct tokenlist *tl)
{
const struct purge_var *pv;
vcc_NextToken(tl);
Expect(tl, '(');
vcc_NextToken(tl);
......@@ -362,6 +373,25 @@ parse_purge(struct tokenlist *tl)
tl->indent += INDENT;
while (1) {
ExpectErr(tl, VAR);
/* Check valididity of purge variable */
for (pv = purge_var; pv->name != NULL; pv++) {
if (!strncmp(pv->name, tl->t->b,
strlen(pv->name)))
break;
}
if (pv->name == NULL) {
vsb_printf(tl->sb, "Unknown purge variable.");
vcc_ErrWhere(tl, tl->t);
return;
}
if (pv->flag &&
tl->t->b + strlen(pv->name) >= tl->t->e) {
vsb_printf(tl->sb, "Missing header name.");
vcc_ErrWhere(tl, tl->t);
return;
}
Fb(tl, 1, " \"%.*s\",\n", PF(tl->t));
vcc_NextToken(tl);
switch(tl->t->tok) {
......
......@@ -235,8 +235,8 @@ vcl_output_lang_h(struct vsb *sb)
vsb_cat(sb, " * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWI");
vsb_cat(sb, "SE) ARISING IN ANY WAY\n * OUT OF THE USE OF THIS SOFT");
vsb_cat(sb, "WARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n");
vsb_cat(sb, " * SUCH DAMAGE.\n *\n * $Id: vrt.h 3723 2009-02-10 14:");
vsb_cat(sb, "50:53Z tfheen $\n *\n * Runtime support for compiled V");
vsb_cat(sb, " * SUCH DAMAGE.\n *\n * $Id: vrt.h 3724 2009-02-10 14:");
vsb_cat(sb, "58:17Z tfheen $\n *\n * Runtime support for compiled V");
vsb_cat(sb, "CL programs.\n *\n * XXX: When this file is changed, l");
vsb_cat(sb, "ib/libvcl/vcc_gen_fixed_token.tcl\n");
vsb_cat(sb, " * XXX: *MUST* be rerun.\n */\n");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment