[master] 33ec7d099 Split VFP filter stuff out of vrt_vcl

Poul-Henning Kamp phk at FreeBSD.org
Thu Oct 11 09:10:16 UTC 2018


commit 33ec7d099b380762c05aa93be12ca97dd2cbfba3
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date:   Thu Oct 11 09:00:39 2018 +0000

    Split VFP filter stuff out of vrt_vcl

diff --git a/bin/varnishd/Makefile.am b/bin/varnishd/Makefile.am
index ed2b5c6b5..6b2e4753b 100644
--- a/bin/varnishd/Makefile.am
+++ b/bin/varnishd/Makefile.am
@@ -44,11 +44,12 @@ varnishd_SOURCES = \
 	cache/cache_tcp_pool.c \
 	cache/cache_vary.c \
 	cache/cache_vcl.c \
-	cache/cache_vrt_vcl.c \
 	cache/cache_vrt.c \
+	cache/cache_vrt_filter.c \
 	cache/cache_vrt_priv.c \
 	cache/cache_vrt_re.c \
 	cache/cache_vrt_var.c \
+	cache/cache_vrt_vcl.c \
 	cache/cache_vrt_vmod.c \
 	cache/cache_wrk.c \
 	cache/cache_ws.c \
diff --git a/bin/varnishd/cache/cache_vrt_filter.c b/bin/varnishd/cache/cache_vrt_filter.c
new file mode 100644
index 000000000..653029da1
--- /dev/null
+++ b/bin/varnishd/cache/cache_vrt_filter.c
@@ -0,0 +1,144 @@
+/*-
+ * Copyright (c) 2006 Verdens Gang AS
+ * Copyright (c) 2006-2016 Varnish Software AS
+ * All rights reserved.
+ *
+ * Author: Poul-Henning Kamp <phk at phk.freebsd.dk>
+ *
+ * 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.
+ *
+ */
+
+#include "config.h"
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <stdlib.h>
+
+#include "vct.h"
+#include "cache_varnishd.h"
+#include "cache_vcl.h"
+
+#include "cache_filter.h"
+
+/*--------------------------------------------------------------------
+ */
+
+struct vfp_filter {
+	unsigned			magic;
+#define VFP_FILTER_MAGIC		0xd40894e9
+	const struct vfp		*filter;
+	int				nlen;
+	VTAILQ_ENTRY(vfp_filter)	list;
+};
+
+static struct vfp_filter_head vfp_filters =
+    VTAILQ_HEAD_INITIALIZER(vfp_filters);
+
+void
+VRT_AddVFP(VRT_CTX, const struct vfp *filter)
+{
+	struct vfp_filter *vp;
+	struct vfp_filter_head *hd = &vfp_filters;
+
+	VTAILQ_FOREACH(vp, hd, list) {
+		xxxassert(vp->filter != filter);
+		xxxassert(strcasecmp(vp->filter->name, filter->name));
+	}
+	if (ctx != NULL) {
+		hd = &ctx->vcl->vfps;
+		VTAILQ_FOREACH(vp, hd, list) {
+			xxxassert(vp->filter != filter);
+			xxxassert(strcasecmp(vp->filter->name, filter->name));
+		}
+	}
+	ALLOC_OBJ(vp, VFP_FILTER_MAGIC);
+	AN(vp);
+	vp->filter = filter;
+	vp->nlen = strlen(filter->name);
+	VTAILQ_INSERT_TAIL(hd, vp, list);
+}
+
+void
+VRT_RemoveVFP(VRT_CTX, const struct vfp *filter)
+{
+	struct vfp_filter *vp;
+	struct vfp_filter_head *hd = &ctx->vcl->vfps;
+
+	VTAILQ_FOREACH(vp, hd, list) {
+		if (vp->filter == filter)
+			break;
+	}
+	XXXAN(vp);
+	VTAILQ_REMOVE(hd, vp, list);
+	FREE_OBJ(vp);
+}
+
+int
+VCL_StackVFP(struct vfp_ctx *vc, const struct vcl *vcl, const char *fl)
+{
+	const char *p, *q;
+	const struct vfp_filter *vp;
+
+	VSLb(vc->wrk->vsl, SLT_Filters, "%s", fl);
+
+	for (p = fl; *p; p = q) {
+		if (vct_isspace(*p)) {
+			q = p + 1;
+			continue;
+		}
+		for (q = p; *q; q++)
+			if (vct_isspace(*q))
+				break;
+		VTAILQ_FOREACH(vp, &vfp_filters, list) {
+			if (vp->nlen != q - p)
+				continue;
+			if (!memcmp(p, vp->filter->name, vp->nlen))
+				break;
+		}
+		if (vp == NULL) {
+			VTAILQ_FOREACH(vp, &vcl->vfps, list) {
+				if (vp->nlen != q - p)
+					continue;
+				if (!memcmp(p, vp->filter->name, vp->nlen))
+					break;
+			}
+		}
+		if (vp == NULL)
+			return (VFP_Error(vc,
+			    "Filter '%.*s' not found", (int)(q-p), p));
+		if (VFP_Push(vc, vp->filter) == NULL)
+			return (-1);
+	}
+	return (0);
+}
+
+void
+VCL_VRT_Init(void)
+{
+	VRT_AddVFP(NULL, &VFP_testgunzip);
+	VRT_AddVFP(NULL, &VFP_gunzip);
+	VRT_AddVFP(NULL, &VFP_gzip);
+	VRT_AddVFP(NULL, &VFP_esi);
+	VRT_AddVFP(NULL, &VFP_esi_gzip);
+}
diff --git a/bin/varnishd/cache/cache_vrt_vcl.c b/bin/varnishd/cache/cache_vrt_vcl.c
index 06b006b52..7b9d7fed8 100644
--- a/bin/varnishd/cache/cache_vrt_vcl.c
+++ b/bin/varnishd/cache/cache_vrt_vcl.c
@@ -37,12 +37,10 @@
 #include "cache_varnishd.h"
 
 #include "vcl.h"
-#include "vct.h"
 #include "vtim.h"
 
 #include "cache_director.h"
 #include "cache_vcl.h"
-#include "cache_filter.h"
 
 /*--------------------------------------------------------------------*/
 
@@ -462,105 +460,3 @@ VCL_##func##_method(struct vcl *vcl, struct worker *wrk,		\
 }
 
 #include "tbl/vcl_returns.h"
-
-/*--------------------------------------------------------------------
- */
-
-struct vfp_filter {
-	unsigned			magic;
-#define VFP_FILTER_MAGIC		0xd40894e9
-	const struct vfp		*filter;
-	int				nlen;
-	VTAILQ_ENTRY(vfp_filter)	list;
-};
-
-static struct vfp_filter_head vfp_filters =
-    VTAILQ_HEAD_INITIALIZER(vfp_filters);
-
-void
-VRT_AddVFP(VRT_CTX, const struct vfp *filter)
-{
-	struct vfp_filter *vp;
-	struct vfp_filter_head *hd = &vfp_filters;
-
-	VTAILQ_FOREACH(vp, hd, list) {
-		xxxassert(vp->filter != filter);
-		xxxassert(strcasecmp(vp->filter->name, filter->name));
-	}
-	if (ctx != NULL) {
-		hd = &ctx->vcl->vfps;
-		VTAILQ_FOREACH(vp, hd, list) {
-			xxxassert(vp->filter != filter);
-			xxxassert(strcasecmp(vp->filter->name, filter->name));
-		}
-	}
-	ALLOC_OBJ(vp, VFP_FILTER_MAGIC);
-	AN(vp);
-	vp->filter = filter;
-	vp->nlen = strlen(filter->name);
-	VTAILQ_INSERT_TAIL(hd, vp, list);
-}
-
-void
-VRT_RemoveVFP(VRT_CTX, const struct vfp *filter)
-{
-	struct vfp_filter *vp;
-	struct vfp_filter_head *hd = &ctx->vcl->vfps;
-
-	VTAILQ_FOREACH(vp, hd, list) {
-		if (vp->filter == filter)
-			break;
-	}
-	XXXAN(vp);
-	VTAILQ_REMOVE(hd, vp, list);
-	FREE_OBJ(vp);
-}
-
-int
-VCL_StackVFP(struct vfp_ctx *vc, const struct vcl *vcl, const char *fl)
-{
-	const char *p, *q;
-	const struct vfp_filter *vp;
-
-	VSLb(vc->wrk->vsl, SLT_Filters, "%s", fl);
-
-	for (p = fl; *p; p = q) {
-		if (vct_isspace(*p)) {
-			q = p + 1;
-			continue;
-		}
-		for (q = p; *q; q++)
-			if (vct_isspace(*q))
-				break;
-		VTAILQ_FOREACH(vp, &vfp_filters, list) {
-			if (vp->nlen != q - p)
-				continue;
-			if (!memcmp(p, vp->filter->name, vp->nlen))
-				break;
-		}
-		if (vp == NULL) {
-			VTAILQ_FOREACH(vp, &vcl->vfps, list) {
-				if (vp->nlen != q - p)
-					continue;
-				if (!memcmp(p, vp->filter->name, vp->nlen))
-					break;
-			}
-		}
-		if (vp == NULL)
-			return (VFP_Error(vc,
-			    "Filter '%.*s' not found", (int)(q-p), p));
-		if (VFP_Push(vc, vp->filter) == NULL)
-			return (-1);
-	}
-	return (0);
-}
-
-void
-VCL_VRT_Init(void)
-{
-	VRT_AddVFP(NULL, &VFP_testgunzip);
-	VRT_AddVFP(NULL, &VFP_gunzip);
-	VRT_AddVFP(NULL, &VFP_gzip);
-	VRT_AddVFP(NULL, &VFP_esi);
-	VRT_AddVFP(NULL, &VFP_esi_gzip);
-}


More information about the varnish-commit mailing list