[master] 57ff148 Remove the hybrid VCL ban() syntax, it was only confusing everybody.
Poul-Henning Kamp
phk at varnish-cache.org
Wed May 18 09:37:28 CEST 2011
commit 57ff1484fb46f70eac65f7eb64bb872eaa7c3cf8
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date: Wed May 18 07:37:01 2011 +0000
Remove the hybrid VCL ban() syntax, it was only confusing everybody.
diff --git a/bin/varnishtest/tests/c00022.vtc b/bin/varnishtest/tests/c00022.vtc
index 4097c65..ca64e59 100644
--- a/bin/varnishtest/tests/c00022.vtc
+++ b/bin/varnishtest/tests/c00022.vtc
@@ -21,7 +21,7 @@ server s1 {
varnish v1 -vcl+backend {
sub vcl_recv {
if (req.request == "PURGE") {
- ban (req.url == req.url);
+ ban ("req.url == " + req.url);
error 410;
}
if (req.request == "PURGESTR") {
@@ -31,26 +31,6 @@ varnish v1 -vcl+backend {
}
} -start
-# Trigger syntax check
-varnish v1 -badvcl {
- backend foo {
- .host = "127.0.0.1";
- }
- sub vcl_recv {
- ban (req.foo == req.url);
- }
-}
-
-# Trigger syntax check
-varnish v1 -badvcl {
- backend foo {
- .host = "127.0.0.1";
- }
- sub vcl_recv {
- ban (req.http. == req.url);
- }
-}
-
# Fetch into cache
client c1 {
txreq -url "/foo"
diff --git a/lib/libvcl/vcc_action.c b/lib/libvcl/vcc_action.c
index fdb2c63..f90c3b9 100644
--- a/lib/libvcl/vcc_action.c
+++ b/lib/libvcl/vcc_action.c
@@ -176,84 +176,19 @@ parse_unset(struct vcc *tl)
/*--------------------------------------------------------------------*/
-static const struct ban_var {
- const char *name;
- unsigned flag;
-} ban_var[] = {
-#define PVAR(a, b, c) { (a), (b) },
-#include "ban_vars.h"
-#undef PVAR
- { 0, 0 }
-};
-
static void
parse_ban(struct vcc *tl)
{
- const struct ban_var *pv;
vcc_NextToken(tl);
ExpectErr(tl, '(');
vcc_NextToken(tl);
- if (tl->t->tok == ID) {
- Fb(tl, 1, "VRT_ban(sp,\n");
- tl->indent += INDENT;
- while (1) {
- ExpectErr(tl, ID);
-
- /* Check valididity of ban variable */
- for (pv = ban_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 ban variable.");
- vcc_ErrWhere(tl, tl->t);
- return;
- }
- if ((pv->flag & PVAR_HTTP) &&
- 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) {
- case '~':
- case T_NOMATCH:
- case T_EQ:
- case T_NEQ:
- Fb(tl, 1, " \"%.*s\",\n", PF(tl->t));
- break;
- default:
- vsb_printf(tl->sb,
- "Expected ~, !~, == or !=.\n");
- vcc_ErrWhere(tl, tl->t);
- return;
- }
- vcc_NextToken(tl);
- Fb(tl, 1, " ");
- vcc_Expr(tl, STRING);
- ERRCHK(tl);
- Fb(tl, 0, ",\n");
- if (tl->t->tok == ')')
- break;
- ExpectErr(tl, T_CAND);
- Fb(tl, 1, "\"%.*s\",\n", PF(tl->t));
- vcc_NextToken(tl);
- }
- Fb(tl, 1, "0);\n");
- tl->indent -= INDENT;
- } else {
- Fb(tl, 1, "VRT_ban_string(sp, ");
- vcc_Expr(tl, STRING);
- ERRCHK(tl);
- Fb(tl, 0, ");\n");
- }
+ Fb(tl, 1, "VRT_ban_string(sp, ");
+ vcc_Expr(tl, STRING);
+ ERRCHK(tl);
+ Fb(tl, 0, ");\n");
ExpectErr(tl, ')');
vcc_NextToken(tl);
More information about the varnish-commit
mailing list