r3657 - in branches/2.0/varnish-cache: bin/varnishd lib/libvcl
tfheen at projects.linpro.no
tfheen at projects.linpro.no
Fri Feb 6 13:05:00 CET 2009
Author: tfheen
Date: 2009-02-06 13:04:59 +0100 (Fri, 06 Feb 2009)
New Revision: 3657
Modified:
branches/2.0/varnish-cache/bin/varnishd/default.vcl
branches/2.0/varnish-cache/lib/libvcl/vcc_action.c
Log:
Merge r3460: New return syntax
Add support for, and use a new syntax for terminating actions in VCL,
basically "return(action)" instead of just "action".
The previous syntax is still available.
Modified: branches/2.0/varnish-cache/bin/varnishd/default.vcl
===================================================================
--- branches/2.0/varnish-cache/bin/varnishd/default.vcl 2009-02-06 12:01:31 UTC (rev 3656)
+++ branches/2.0/varnish-cache/bin/varnishd/default.vcl 2009-02-06 12:04:59 UTC (rev 3657)
@@ -48,25 +48,25 @@
req.request != "OPTIONS" &&
req.request != "DELETE") {
/* Non-RFC2616 or CONNECT which is weird. */
- pipe;
+ return (pipe);
}
if (req.request != "GET" && req.request != "HEAD") {
/* We only deal with GET and HEAD by default */
- pass;
+ return (pass);
}
if (req.http.Authorization || req.http.Cookie) {
/* Not cacheable by default */
- pass;
+ return (pass);
}
- lookup;
+ return (lookup);
}
sub vcl_pipe {
- pipe;
+ return (pipe);
}
sub vcl_pass {
- pass;
+ return (pass);
}
sub vcl_hash {
@@ -76,48 +76,48 @@
} else {
set req.hash += server.ip;
}
- hash;
+ return (hash);
}
sub vcl_hit {
if (!obj.cacheable) {
- pass;
+ return (pass);
}
- deliver;
+ return (deliver);
}
sub vcl_miss {
- fetch;
+ return (fetch);
}
sub vcl_fetch {
if (!obj.cacheable) {
- pass;
+ return (pass);
}
if (obj.http.Set-Cookie) {
- pass;
+ return (pass);
}
set obj.prefetch = -30s;
- deliver;
+ return (deliver);
}
sub vcl_deliver {
- deliver;
+ return (deliver);
}
sub vcl_discard {
/* XXX: Do not redefine vcl_discard{}, it is not yet supported */
- discard;
+ return (discard);
}
sub vcl_prefetch {
/* XXX: Do not redefine vcl_prefetch{}, it is not yet supported */
- fetch;
+ return (fetch);
}
sub vcl_timeout {
/* XXX: Do not redefine vcl_timeout{}, it is not yet supported */
- discard;
+ return (discard);
}
sub vcl_error {
@@ -141,5 +141,5 @@
</body>
</html>
"};
- deliver;
+ return (deliver);
}
Modified: branches/2.0/varnish-cache/lib/libvcl/vcc_action.c
===================================================================
--- branches/2.0/varnish-cache/lib/libvcl/vcc_action.c 2009-02-06 12:01:31 UTC (rev 3656)
+++ branches/2.0/varnish-cache/lib/libvcl/vcc_action.c 2009-02-06 12:04:59 UTC (rev 3657)
@@ -41,23 +41,37 @@
/*--------------------------------------------------------------------*/
-#define VCL_RET_MAC(l,u,b,i) \
-static void \
-parse_##l(struct tokenlist *tl) \
-{ \
- \
- Fb(tl, 1, "VRT_done(sp, VCL_RET_%s);\n", #u); \
- vcc_ProcAction(tl->curproc, i, tl->t); \
- vcc_NextToken(tl); \
-}
+static void
+parse_action(struct tokenlist *tl)
+{
+ int retval = 0;
+ Expect(tl, ID);
+
+#define VCL_RET_MAC(l, u, b, i) \
+ do { \
+ if (vcc_IdIs(tl->t, #l)) { \
+ Fb(tl, 1, "VRT_done(sp, VCL_RET_%s);\n", #u); \
+ vcc_ProcAction(tl->curproc, i, tl->t); \
+ retval = 1; \
+ } \
+ } while (0);
+#define VCL_RET_MAC_E(l, u, b, i) VCL_RET_MAC(l, u, b, i)
#include "vcl_returns.h"
#undef VCL_RET_MAC
+#undef VCL_RET_MAC_E
+ if (!retval) {
+ vsb_printf(tl->sb, "Expected action name.\n");
+ vcc_ErrWhere(tl, tl->t);
+ ERRCHK(tl);
+ }
+ vcc_NextToken(tl);
+}
/*--------------------------------------------------------------------*/
static void
-parse_restart_real(struct tokenlist *tl)
+parse_restart(struct tokenlist *tl)
{
struct token *t1;
@@ -70,7 +84,9 @@
vcc_ErrWhere(tl, t1);
ERRCHK(tl);
}
- parse_restart(tl);
+ Fb(tl, 1, "VRT_done(sp, VCL_RET_RESTART);\n");
+ vcc_ProcAction(tl->curproc, VCL_RET_RESTART, tl->t);
+ vcc_NextToken(tl);
}
/*--------------------------------------------------------------------*/
@@ -407,6 +423,22 @@
/*--------------------------------------------------------------------*/
static void
+parse_return(struct tokenlist *tl)
+{
+ vcc_NextToken(tl);
+ Expect(tl, '(');
+ vcc_NextToken(tl);
+ Expect(tl, ID);
+
+ parse_action(tl);
+ ERRCHK(tl);
+ Expect(tl, ')');
+ vcc_NextToken(tl);
+}
+
+/*--------------------------------------------------------------------*/
+
+static void
parse_synthetic(struct tokenlist *tl)
{
vcc_NextToken(tl);
@@ -430,12 +462,11 @@
const char *name;
action_f *func;
} action_table[] = {
- { "restart", parse_restart_real },
-#define VCL_RET_MAC(l, u, b, i) { #l, parse_##l },
-#define VCL_RET_MAC_E(l, u, b, i) VCL_RET_MAC(l, u, b, i)
+ { "restart", parse_restart },
+ { "error", parse_error },
+#define VCL_RET_MAC(l, u, b, i) { #l, parse_action },
#include "vcl_returns.h"
#undef VCL_RET_MAC
-#undef VCL_RET_MAC_E
/* Keep list sorted from here */
{ "call", parse_call },
@@ -447,6 +478,7 @@
{ "set", parse_set },
{ "synthetic", parse_synthetic },
{ "unset", parse_unset },
+ { "return", parse_return },
{ NULL, NULL }
};
More information about the varnish-commit
mailing list