From 7ff58ba3f383ccc58ce0e62eac57d3f53ac9bc90 Mon Sep 17 00:00:00 2001 From: phk Date: Sun, 30 Sep 2007 21:27:16 +0000 Subject: [PATCH] Add VCL action "esi" and a vrt file to contain it. git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@2069 d4fa192b-c00b-0410-8231-f00ffab90ce4 --- varnish-cache/bin/varnishd/Makefile.am | 1 + varnish-cache/bin/varnishd/cache_vrt_esi.c | 52 ++++++++++++++++++++++ varnish-cache/include/vrt.h | 2 + varnish-cache/lib/libvcl/vcc_action.c | 10 +++++ varnish-cache/lib/libvcl/vcc_fixed_token.c | 2 + 5 files changed, 67 insertions(+) create mode 100644 varnish-cache/bin/varnishd/cache_vrt_esi.c diff --git a/varnish-cache/bin/varnishd/Makefile.am b/varnish-cache/bin/varnishd/Makefile.am index 6752e793..abcfea66 100644 --- a/varnish-cache/bin/varnishd/Makefile.am +++ b/varnish-cache/bin/varnishd/Makefile.am @@ -34,6 +34,7 @@ varnishd_SOURCES = \ cache_vrt.c \ cache_vrt_acl.c \ cache_vrt_re.c \ + cache_vrt_esi.c \ cache_ws.c \ hash_simple_list.c \ hash_classic.c \ diff --git a/varnish-cache/bin/varnishd/cache_vrt_esi.c b/varnish-cache/bin/varnishd/cache_vrt_esi.c new file mode 100644 index 00000000..8d8b4aaa --- /dev/null +++ b/varnish-cache/bin/varnishd/cache_vrt_esi.c @@ -0,0 +1,52 @@ +/*- + * Copyright (c) 2006 Verdens Gang AS + * Copyright (c) 2006-2007 Linpro AS + * All rights reserved. + * + * Author: Poul-Henning Kamp + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $Id: cache_vrt.c 2067 2007-09-30 20:57:30Z phk $ + * + * Runtime support for compiled VCL programs + */ + +#include +#include +#include +#include + +#include "shmlog.h" +#include "vrt.h" +#include "vcl.h" +#include "cache.h" + +/*--------------------------------------------------------------------*/ + +void +VRT_ESI(struct sess *sp) +{ + + CHECK_OBJ_NOTNULL(sp, SESS_MAGIC); + INCOMPL(); +} diff --git a/varnish-cache/include/vrt.h b/varnish-cache/include/vrt.h index 4b41c3c3..ad4531ba 100644 --- a/varnish-cache/include/vrt.h +++ b/varnish-cache/include/vrt.h @@ -113,6 +113,8 @@ void VRT_handling(struct sess *sp, unsigned hand); /* Simple stuff */ int VRT_strcmp(const char *s1, const char *s2); +void VRT_ESI(struct sess *sp); + /* Backend related */ void VRT_init_simple_backend(struct backend **, const struct vrt_simple_backend *); diff --git a/varnish-cache/lib/libvcl/vcc_action.c b/varnish-cache/lib/libvcl/vcc_action.c index 7418d8cb..67a8932e 100644 --- a/varnish-cache/lib/libvcl/vcc_action.c +++ b/varnish-cache/lib/libvcl/vcc_action.c @@ -317,6 +317,15 @@ parse_purge_hash(struct tokenlist *tl) Fb(tl, 0, ", 1);\n"); } +static void +parse_esi(struct tokenlist *tl) +{ + + vcc_NextToken(tl); + Fb(tl, 1, "VRT_ESI(sp);\n"); + Expect(tl, ';'); + vcc_NextToken(tl); +} /*--------------------------------------------------------------------*/ @@ -336,6 +345,7 @@ static struct action_table { { "remove", parse_remove }, { "purge_url", parse_purge_url }, { "purge_hash", parse_purge_hash }, + { "esi", parse_esi }, { NULL, NULL } }; diff --git a/varnish-cache/lib/libvcl/vcc_fixed_token.c b/varnish-cache/lib/libvcl/vcc_fixed_token.c index 0c92723a..8726484d 100644 --- a/varnish-cache/lib/libvcl/vcc_fixed_token.c +++ b/varnish-cache/lib/libvcl/vcc_fixed_token.c @@ -492,6 +492,8 @@ vcl_output_lang_h(struct vsb *sb) vsb_cat(sb, "/* Simple stuff */\n"); vsb_cat(sb, "int VRT_strcmp(const char *s1, const char *s2);\n"); vsb_cat(sb, "\n"); + vsb_cat(sb, "void VRT_ESI(struct sess *sp);\n"); + vsb_cat(sb, "\n"); vsb_cat(sb, "\n"); vsb_cat(sb, "/* Backend related */\n"); vsb_cat(sb, "void VRT_init_simple_backend(struct backend **, const struct vrt_simple_backend *);\n"); -- 2.39.5