[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