Commit 59402fee authored by Poul-Henning Kamp's avatar Poul-Henning Kamp

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



git-svn-id: http://www.varnish-cache.org/svn/trunk/varnish-cache@3543 d4fa192b-c00b-0410-8231-f00ffab90ce4
parent 984919d2
......@@ -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) {
......
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