[master] fa014c8 Change the "error" syntax to:
Poul-Henning Kamp
phk at varnish-cache.org
Sun May 12 13:08:44 CEST 2013
commit fa014c869726b540ba86d51ff0f777c82a10c5c8
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date: Sun May 12 11:08:06 2013 +0000
Change the "error" syntax to:
return (error(status_code [ , response_string ]));
diff --git a/bin/varnishtest/tests/b00016.vtc b/bin/varnishtest/tests/b00016.vtc
index 93be72b..56bbd33 100644
--- a/bin/varnishtest/tests/b00016.vtc
+++ b/bin/varnishtest/tests/b00016.vtc
@@ -6,7 +6,7 @@ varnish v1 -vcl {
}
sub vcl_recv {
- error 200 "ok";
+ return(error(200,"ok"));
}
sub vcl_error {
@@ -33,7 +33,7 @@ varnish v1 -vcl {
sub vcl_recv {
set req.backend = bar.backend();
- error 200 "ok";
+ return(error(200,"ok"));
}
sub vcl_error {
@@ -59,7 +59,7 @@ varnish v1 -vcl {
sub vcl_recv {
set req.backend = baz.backend();
- error 200 "ok";
+ return (error(200,"ok"));
}
sub vcl_error {
diff --git a/bin/varnishtest/tests/b00017.vtc b/bin/varnishtest/tests/b00017.vtc
index 85ec39c..053fffd 100644
--- a/bin/varnishtest/tests/b00017.vtc
+++ b/bin/varnishtest/tests/b00017.vtc
@@ -5,7 +5,7 @@ varnish v1 -vcl {
.host = "${bad_ip}"; .port = "9080";
}
sub vcl_recv {
- error 888;
+ return (error(888));
}
} -start
diff --git a/bin/varnishtest/tests/b00028.vtc b/bin/varnishtest/tests/b00028.vtc
index b91c274..0745959 100644
--- a/bin/varnishtest/tests/b00028.vtc
+++ b/bin/varnishtest/tests/b00028.vtc
@@ -11,12 +11,12 @@ varnish v1 -vcl+backend {
if (beresp.http.foo ~ "bar") {
set beresp.http.foo1 = "1";
} else {
- error 999;
+ set beresp.status = 999;
}
if (beresp.http.bar !~ "bar") {
set beresp.http.bar1 = "2";
} else {
- error 999;
+ set beresp.status = 999;
}
}
@@ -25,6 +25,7 @@ varnish v1 -vcl+backend {
client c1 {
txreq
rxresp
+ expect resp.status == "200"
expect resp.http.foo1 == "1"
expect resp.http.bar1 == "2"
} -run
diff --git a/bin/varnishtest/tests/b00030.vtc b/bin/varnishtest/tests/b00030.vtc
index fcd0356..9703cc7 100644
--- a/bin/varnishtest/tests/b00030.vtc
+++ b/bin/varnishtest/tests/b00030.vtc
@@ -10,7 +10,7 @@ server s1 {
varnish v1 -vcl+backend {
sub vcl_recv {
- error 200 req.grace;
+ return (error(200,req.grace));
}
sub vcl_error {
set obj.http.x-timestamp = now;
diff --git a/bin/varnishtest/tests/c00022.vtc b/bin/varnishtest/tests/c00022.vtc
index 64511fa..328ef92 100644
--- a/bin/varnishtest/tests/c00022.vtc
+++ b/bin/varnishtest/tests/c00022.vtc
@@ -22,11 +22,11 @@ varnish v1 -vcl+backend {
sub vcl_recv {
if (req.method == "PURGE") {
ban ("req.url == " + req.url);
- error 410;
+ return (error(410));
}
if (req.method == "PURGESTR") {
ban ("" + req.http.ban);
- error 410;
+ return (error(410));
}
}
} -start
diff --git a/bin/varnishtest/tests/c00033.vtc b/bin/varnishtest/tests/c00033.vtc
index b88acfa..13f69f8 100644
--- a/bin/varnishtest/tests/c00033.vtc
+++ b/bin/varnishtest/tests/c00033.vtc
@@ -26,13 +26,13 @@ varnish v1 -vcl+backend {
sub vcl_lookup {
if (req.method == "PURGE") {
C{ VRT_purge(ctx, 0, 0); }C
- error 456 "got it";
+ return (error(456, "got it"));
}
}
sub vcl_miss {
if (req.method == "PURGE") {
C{ VRT_purge(ctx, 0, 0); }C
- error 456 "got it";
+ return (error(456, "got it"));
}
}
} -start
diff --git a/bin/varnishtest/tests/r00558.vtc b/bin/varnishtest/tests/r00558.vtc
index 0efb9e9..3a8ba97 100644
--- a/bin/varnishtest/tests/r00558.vtc
+++ b/bin/varnishtest/tests/r00558.vtc
@@ -1,4 +1,5 @@
varnishtest "error from vcl_recv{} has no numeric code"
+# XXX: V4 makes this an obsolete test ?
server s1 {
@@ -6,7 +7,7 @@ server s1 {
varnish v1 -vcl+backend {
sub vcl_recv {
- return (error);
+ return (error(501));
}
} -start
diff --git a/bin/varnishtest/tests/r00769.vtc b/bin/varnishtest/tests/r00769.vtc
index 2306346..838ef17 100644
--- a/bin/varnishtest/tests/r00769.vtc
+++ b/bin/varnishtest/tests/r00769.vtc
@@ -8,7 +8,7 @@ server s1 {
varnish v1 -vcl+backend {
sub vcl_recv {
if (req.url ~ "^/test1") {
- error 700;
+ return (error(700));
}
}
sub vcl_backend_response {
diff --git a/bin/varnishtest/tests/r00896.vtc b/bin/varnishtest/tests/r00896.vtc
index 280a176..b559075 100644
--- a/bin/varnishtest/tests/r00896.vtc
+++ b/bin/varnishtest/tests/r00896.vtc
@@ -8,7 +8,7 @@ server s1 {
varnish v1 -vcl+backend {
sub vcl_recv {
if (req.http.host ~ "^(abcdefghij|abcdefghij|abcdefghij|abcdefghij|abcdefghij|abcdefghij|abcdefghij|abcdefghij|abcdefghij|abcdefghij|abcdefghij|abcdefghij|abcdefghij|abcdefghij|abcdefghij|abcdefghij|abcdefghij|abcdefghij|abcdefghij|abcdefghij|abcdefghij|abcdefghij|abcdefghij|abcdefghij|abcdefghij|abcdefghij)") {
- error 500 "not ok";
+ return (error(500,"not ok"));
}
}
} -start
diff --git a/bin/varnishtest/tests/r00936.vtc b/bin/varnishtest/tests/r00936.vtc
index 176cc7c..99e1d65 100644
--- a/bin/varnishtest/tests/r00936.vtc
+++ b/bin/varnishtest/tests/r00936.vtc
@@ -9,7 +9,7 @@ varnish v1 -errvcl {'synthetic': not a valid action in method 'vcl_recv'} {
backend foo { .host = "127.0.0.1"; }
sub vcl_recv {
- synthetic "HELLOO"; return (error);
+ synthetic "HELLOO"; return (error(503));
}
}
diff --git a/bin/varnishtest/tests/r00965.vtc b/bin/varnishtest/tests/r00965.vtc
index b3a1299..72317de 100644
--- a/bin/varnishtest/tests/r00965.vtc
+++ b/bin/varnishtest/tests/r00965.vtc
@@ -32,11 +32,15 @@ varnish v1 -vcl+backend {
}
sub vcl_miss {
- if (req.http.X-Banned == "check") { error 988 "restarting"; }
+ if (req.http.X-Banned == "check") {
+ return (error(988,"restarting"));
+ }
}
sub vcl_pass {
- if (req.http.X-Banned == "check") { error 988 "restarting"; }
+ if (req.http.X-Banned == "check") {
+ return (error(988,"restarting"));
+ }
}
} -start
diff --git a/bin/varnishtest/tests/r01027.vtc b/bin/varnishtest/tests/r01027.vtc
index 347f623..d6d0991 100644
--- a/bin/varnishtest/tests/r01027.vtc
+++ b/bin/varnishtest/tests/r01027.vtc
@@ -1,9 +1,9 @@
varnishtest "Test if you can error in vcl_deliver"
-varnish v1 -errvcl {'error': not a valid action in method 'vcl_deliver'} {
+varnish v1 -errvcl {Invalid return "error"} {
backend b { .host = "127.0.0.1"; }
sub vcl_deliver {
- error 201 "ok";
+ return (error(201,"ok"));
}
}
diff --git a/bin/varnishtest/tests/r01030.vtc b/bin/varnishtest/tests/r01030.vtc
index f8aa7fb..4f95d70 100644
--- a/bin/varnishtest/tests/r01030.vtc
+++ b/bin/varnishtest/tests/r01030.vtc
@@ -16,7 +16,7 @@ varnish v1 -vcl+backend {
sub vcl_recv {
if (req.method == "BAN") {
ban("obj.http.url ~ /");
- error 201 "banned";
+ return (error(201,"banned"));
}
return (hash);
}
diff --git a/bin/varnishtest/tests/r01031.vtc b/bin/varnishtest/tests/r01031.vtc
index 435f973..27bbab2 100644
--- a/bin/varnishtest/tests/r01031.vtc
+++ b/bin/varnishtest/tests/r01031.vtc
@@ -6,7 +6,7 @@ varnish v1 -vcl {
}
sub vcl_recv {
- error 200 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
+ return (error(200,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"));
}
sub vcl_error {
return(deliver);
diff --git a/bin/varnishtest/tests/r01283.vtc b/bin/varnishtest/tests/r01283.vtc
index eaa7b81..76fa434 100644
--- a/bin/varnishtest/tests/r01283.vtc
+++ b/bin/varnishtest/tests/r01283.vtc
@@ -8,7 +8,7 @@ server s1 {
varnish v1 -arg "-p nuke_limit=0" -storage "-sTransient=malloc,1m" -vcl+backend {
sub vcl_recv {
if (req.http.x-do-error) {
- error 500;
+ return (error(500));
}
}
sub vcl_backend_response {
diff --git a/bin/varnishtest/tests/v00011.vtc b/bin/varnishtest/tests/v00011.vtc
index 89119e4..b815127 100644
--- a/bin/varnishtest/tests/v00011.vtc
+++ b/bin/varnishtest/tests/v00011.vtc
@@ -12,7 +12,7 @@ varnish v1 -vcl+backend {
sub vcl_recv {
if (req.method == "PURGE") {
ban("req.url ~ ^/$");
- error 209 "foo";
+ return (error(209,"foo"));
}
}
diff --git a/bin/varnishtest/tests/v00014.vtc b/bin/varnishtest/tests/v00014.vtc
index 206e8bc..5477a98 100644
--- a/bin/varnishtest/tests/v00014.vtc
+++ b/bin/varnishtest/tests/v00014.vtc
@@ -26,9 +26,9 @@ varnish v1 -vcl {
sub vcl_recv {
if (req.backend.healthy) {
- error 200 "Backend healthy";
+ return(error(200,"Backend healthy"));
} else {
- error 500 "Backend sick";
+ return(error(500,"Backend sick"));
}
}
} -start
diff --git a/bin/varnishtest/tests/v00018.vtc b/bin/varnishtest/tests/v00018.vtc
index a89ecb6..6b6fa1f 100644
--- a/bin/varnishtest/tests/v00018.vtc
+++ b/bin/varnishtest/tests/v00018.vtc
@@ -8,14 +8,8 @@ varnish v1 -vcl {
varnish v1 -vcl {
backend b { .host = "127.0.0.1"; }
- sub vcl_backend_response { error beresp.status ; }
-}
-
-varnish v1 -vcl {
- backend b { .host = "127.0.0.1"; }
- sub vcl_miss { error 100 req.url ; }
- sub vcl_lookup { error 100 "the butter please" ; }
- sub vcl_backend_response { error beresp.status req.url; }
+ sub vcl_miss { return(error(100,req.url)); }
+ sub vcl_lookup { return(error(100,"the butter please")); }
}
varnish v1 -errvcl {Variable 'server.port' is read only.} {
@@ -108,3 +102,13 @@ varnish v1 -errvcl {Unknown token '<<' when looking for STRING_LIST} {
backend b { .host = "127.0.0.1"; }
sub vcl_error { synthetic << "foo"; }
}
+
+varnish v1 -errvcl {Syntax has changed, use:} {
+ backend b { .host = "127.0.0.1"; }
+ sub vcl_recv { error 200; }
+}
+
+varnish v1 -errvcl {Syntax has changed, use:} {
+ backend b { .host = "127.0.0.1"; }
+ sub vcl_recv { return(error); }
+}
diff --git a/bin/varnishtest/tests/v00024.vtc b/bin/varnishtest/tests/v00024.vtc
index 9c2040c..5ef311a 100644
--- a/bin/varnishtest/tests/v00024.vtc
+++ b/bin/varnishtest/tests/v00024.vtc
@@ -9,7 +9,7 @@ server s1 {
varnish v1 -vcl+backend {
sub vcl_recv {
if (req.http.etag == req.http.if-none-match) {
- error 400 "FOO";
+ return(error(400,"FOO"));
}
}
} -start
diff --git a/lib/libvcl/vcc_action.c b/lib/libvcl/vcc_action.c
index 057e151..f53248b 100644
--- a/lib/libvcl/vcc_action.c
+++ b/lib/libvcl/vcc_action.c
@@ -58,29 +58,13 @@ static void
parse_error(struct vcc *tl)
{
- vcc_NextToken(tl);
- Fb(tl, 1, "VRT_error(ctx,\n");
- if (tl->t->tok == '(') {
- vcc_NextToken(tl);
- vcc_Expr(tl, INT);
- if (tl->t->tok == ',') {
- Fb(tl, 1, ",\n");
- vcc_NextToken(tl);
- vcc_Expr(tl, STRING);
- } else
- Fb(tl, 1, ", 0\n");
- SkipToken(tl, ')');
- } else {
- vcc_Expr(tl, INT);
- if (tl->t->tok != ';') {
- Fb(tl, 1, ",\n");
- vcc_Expr(tl, STRING);
- } else
- Fb(tl, 1, ", 0\n");
- }
- Fb(tl, 1, ");\n");
- Fb(tl, 1, "VRT_handling(ctx, VCL_RET_ERROR);\n");
- Fb(tl, 1, "return(1);\n");
+ VSB_printf(tl->sb,
+ "Syntax has changed, use:\n"
+ "\treturn(error(999));\n"
+ "or\n"
+ "\treturn(error(999, \"Response text\"));\n");
+ vcc_ErrWhere(tl, tl->t);
+ return;
}
/*--------------------------------------------------------------------*/
@@ -300,6 +284,44 @@ parse_return(struct vcc *tl)
vcc_NextToken(tl);
ExpectErr(tl, ID);
+ /* 'error' gets special handling, to allow optional status/response */
+ if (vcc_IdIs(tl->t, "error")) {
+ vcc_NextToken(tl);
+ if (tl->t->tok == ')') {
+ VSB_printf(tl->sb,
+ "Syntax has changed, use:\n"
+ "\treturn(error(999));\n"
+ "or\n"
+ "\treturn(error(999, \"Response text\"));\n");
+ vcc_ErrWhere(tl, tl->t);
+ return;
+ }
+ ExpectErr(tl, '(');
+ vcc_NextToken(tl);
+ Fb(tl, 1, "VRT_error(ctx,\n");
+ tl->indent += INDENT;
+ vcc_Expr(tl, INT);
+ ERRCHK(tl);
+ Fb(tl, 1, ",\n");
+ if (tl->t->tok == ',') {
+ vcc_NextToken(tl);
+ vcc_Expr(tl, STRING);
+ ERRCHK(tl);
+ } else {
+ Fb(tl, 1, "(const char*)0\n");
+ }
+ tl->indent -= INDENT;
+ ExpectErr(tl, ')');
+ vcc_NextToken(tl);
+ Fb(tl, 1, ");\n");
+ Fb(tl, 1, "VRT_handling(ctx, VCL_RET_ERROR);\n");
+ Fb(tl, 1, "return (1);\n");
+ vcc_ProcAction(tl->curproc, VCL_RET_ERROR, tl->t);
+ ExpectErr(tl, ')');
+ vcc_NextToken(tl);
+ return;
+ }
+
#define VCL_RET_MAC(l, U, B) \
do { \
if (vcc_IdIs(tl->t, #l)) { \
@@ -363,23 +385,19 @@ static struct action_table {
action_f *func;
unsigned bitmask;
} action_table[] = {
- { "error", parse_error,
- VCL_MET_RECV | VCL_MET_PIPE | VCL_MET_PASS | VCL_MET_HASH |
- VCL_MET_MISS | VCL_MET_LOOKUP | VCL_MET_BACKEND_RESPONSE
- },
-
/* Keep list sorted from here */
+ { "ban", parse_ban },
{ "call", parse_call },
+ { "error", parse_error },
{ "hash_data", parse_hash_data, VCL_MET_HASH },
- { "ban", parse_ban },
+ { "new", parse_new, VCL_MET_INIT},
+ { "purge", parse_purge, VCL_MET_MISS | VCL_MET_LOOKUP },
{ "remove", parse_unset }, /* backward compatibility */
{ "return", parse_return },
{ "rollback", parse_rollback },
{ "set", parse_set },
{ "synthetic", parse_synthetic, VCL_MET_ERROR },
{ "unset", parse_unset },
- { "purge", parse_purge, VCL_MET_MISS | VCL_MET_LOOKUP },
- { "new", parse_new, VCL_MET_INIT},
{ NULL, NULL }
};
More information about the varnish-commit
mailing list