From 06d9ab1393d88156ee06f8e2b4a9080cf72e7ad9 Mon Sep 17 00:00:00 2001 From: Lubos Uhliarik Date: Fri, 10 Aug 2018 09:56:44 +0000 Subject: [PATCH 01/53] Fixed i686 build failure updated to newer version (0.15.0) Drop EPEL and older Fedora releases support Drop broken manual ABI dependency to Varnish Drop commented out references to past patches Verbose test suite Simplified configure step Dependencies cleanup --- varnish-modules-0.15.0-vmod-tcp-int.patch | 13 +++++++ varnish-modules.spec | 45 ++++++++++++++++++----- 2 files changed, 49 insertions(+), 9 deletions(-) create mode 100644 varnish-modules-0.15.0-vmod-tcp-int.patch diff --git a/varnish-modules-0.15.0-vmod-tcp-int.patch b/varnish-modules-0.15.0-vmod-tcp-int.patch new file mode 100644 index 0000000..bc31cf4 --- /dev/null +++ b/varnish-modules-0.15.0-vmod-tcp-int.patch @@ -0,0 +1,13 @@ +diff --git a/src/vmod_tcp.c b/src/vmod_tcp.c +index fee4bd3..e1c5dfa 100644 +--- a/src/vmod_tcp.c ++++ b/src/vmod_tcp.c +@@ -174,7 +174,7 @@ vmod_set_socket_pace(VRT_CTX, VCL_INT rate) + sizeof(pacerate)) != 0) + VSLb(ctx->vsl, SLT_VCL_Error, "set_socket_pace(): Error setting pace rate."); + else +- VSLb(ctx->vsl, SLT_VCL_Log, "vmod-tcp: Socket paced to %lu KB/s.", rate); ++ VSLb(ctx->vsl, SLT_VCL_Log, "vmod-tcp: Socket paced to %d KB/s.", pacerate); + + # ifndef NDEBUG + int retval; diff --git a/varnish-modules.spec b/varnish-modules.spec index a2f3e5b..ef1493e 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -1,3 +1,12 @@ +%define abi 6.1 + +%bcond_without python2 +%bcond_with python3 + +%if %{with python2} == %{with python3} +%error Pick exactly one Python version +%endif + Name: varnish-modules Version: 0.15.0 Release: 1%{?dist} @@ -7,13 +16,23 @@ Group: System Environment/Daemons License: BSD URL: https://github.com/varnish/%{name} Source: https://download.varnish-software.com/varnish-modules/%{name}-%{version}.tar.gz +Patch1: varnish-modules-0.15.0-vmod-tcp-int.patch BuildRequires: gcc BuildRequires: make BuildRequires: pkgconfig(varnishapi) -BuildRequires: python-docutils BuildRequires: varnish +%if %{with python3} +BuildRequires: python3-docutils +%define rst2man %{_bindir}/rst2man +%define vpython %{_bindir}/python3 +%else +BuildRequires: python-docutils +%define rst2man %{_bindir}/rst2man +%define vpython %{_bindir}/python2 +%endif + Requires: varnish Provides: vmod-bodyaccess = %{version}-%{release} @@ -37,6 +56,8 @@ tcp, var, xkey %prep %setup -q +%patch1 -p1 -b .vmod-tcp-int + %build %configure @@ -61,8 +82,9 @@ find %{buildroot}/%{_libdir}/ -name '*.la' -exec rm -f {} ';' %changelog -* Tue Jul 17 2018 Dridi Boukelmoune 0.15.0-1 -- Update to 0.15.0 +* Sun Aug 05 2018 Lubos Uhliarik - 0.15.0-1 +- Fixed i686 build failure +- updated to newer version (0.15.0) - Drop EPEL and older Fedora releases support - Drop broken manual ABI dependency to Varnish - Drop commented out references to past patches @@ -70,14 +92,17 @@ find %{buildroot}/%{_libdir}/ -name '*.la' -exec rm -f {} ';' - Simplified configure step - Dependencies cleanup -* Sat Jul 14 2018 Fedora Release Engineering - 0.12.1-7 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild +* Tue Apr 24 2018 Lubos¡ Uhliarik - 0.12.16 +- use rst2man binary for both python2 and python3 -* Fri Feb 09 2018 Fedora Release Engineering - 0.12.1-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild +* Mon Apr 16 2018 Joe Orton - 0.12.1-4.4 +- fix abi requires (#1566046) -* Sat Oct 21 2017 Dridi Boukelmoune 0.12.1-5 -- Update varnishabi requirement for f28 +* Thu Mar 29 2018 Joe Orton - 0.12.1-4.2 +- fix use of rst2man with python3-docutils + +* Wed Mar 28 2018 Joe Orton - 0.12.1-4.1 +- add Python build conditionals * Thu Aug 03 2017 Fedora Release Engineering - 0.12.1-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild @@ -112,3 +137,5 @@ find %{buildroot}/%{_libdir}/ -name '*.la' -exec rm -f {} ';' - First wrap for fedora - Uses some old-style specfile components for el5 compatibility, including the usage of the BuildRoot header and cleaning the buildroot before install + + From 264de2c9cafbd63e92a6c7fb2f1318e9cefbe617 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 27 Jul 2019 02:48:26 +0000 Subject: [PATCH 02/53] - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- varnish-modules.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/varnish-modules.spec b/varnish-modules.spec index 90ff45e..37f49cd 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -3,7 +3,7 @@ Name: varnish-modules Version: 0.15.0 -Release: 5%{?dist} +Release: 6%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL License: BSD @@ -65,6 +65,9 @@ rm %{buildroot}%{_pkgdocdir}/LICENSE # Rather use license macro %{_mandir}/man3/*.3* %changelog +* Sat Jul 27 2019 Fedora Release Engineering - 0.15.0-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + * Fri Feb 15 2019 Ingvar Hagelund - 0.15.0-5 - Install docs in correct docdir From 74cdd76263d7670751495dbb9f2a1486b1129207 Mon Sep 17 00:00:00 2001 From: Ingvar Hagelund Date: Sun, 29 Sep 2019 00:49:24 +0200 Subject: [PATCH 03/53] Added patch from Nils Goroll, compatibility for varnish-6.3, closes bz#1736943 Rebuilt against varnish-6.3.0 --- varnish-modules-0.15.0.add.bootstrap.patch | 44 + ...e1a981_compatible_with_varnish-6.3.0.patch | 3143 +++++++++++++++++ varnish-modules.spec | 26 +- 3 files changed, 3206 insertions(+), 7 deletions(-) create mode 100644 varnish-modules-0.15.0.add.bootstrap.patch create mode 100644 varnish-modules-0.15.0.nigoroll_to_fe1a981_compatible_with_varnish-6.3.0.patch diff --git a/varnish-modules-0.15.0.add.bootstrap.patch b/varnish-modules-0.15.0.add.bootstrap.patch new file mode 100644 index 0000000..c2106ba --- /dev/null +++ b/varnish-modules-0.15.0.add.bootstrap.patch @@ -0,0 +1,44 @@ +--- /dev/null 2019-09-28 14:48:27.937320545 +0200 ++++ bootstrap 2019-09-29 00:35:05.782099759 +0200 +@@ -0,0 +1,41 @@ ++#!/bin/sh ++ ++warn() { ++ echo "WARNING: $@" 1>&2 ++} ++ ++case `uname -s` in ++Darwin) ++ LIBTOOLIZE=glibtoolize ++ ;; ++FreeBSD) ++ LIBTOOLIZE=libtoolize ++ ;; ++Linux) ++ LIBTOOLIZE=libtoolize ++ ;; ++SunOS) ++ LIBTOOLIZE=libtoolize ++ ;; ++*) ++ warn "unrecognized platform:" `uname -s` ++ LIBTOOLIZE=libtoolize ++esac ++ ++# check for varnishapi.m4 in custom paths ++dataroot=$(pkg-config --variable=datarootdir varnishapi 2>/dev/null) ++if [ -z "$dataroot" ] ; then ++ cat >&2 <<'EOF' ++Package varnishapi was not found in the pkg-config search path. ++Perhaps you should add the directory containing `varnishapi.pc' ++to the PKG_CONFIG_PATH environment variable ++EOF ++ exit 1 ++fi ++set -ex ++mkdir -p m4 ++aclocal -I m4 -I ${dataroot}/aclocal ++$LIBTOOLIZE --copy --force ++autoheader ++automake --add-missing --copy --foreign ++autoconf diff --git a/varnish-modules-0.15.0.nigoroll_to_fe1a981_compatible_with_varnish-6.3.0.patch b/varnish-modules-0.15.0.nigoroll_to_fe1a981_compatible_with_varnish-6.3.0.patch new file mode 100644 index 0000000..e0932c2 --- /dev/null +++ b/varnish-modules-0.15.0.nigoroll_to_fe1a981_compatible_with_varnish-6.3.0.patch @@ -0,0 +1,3143 @@ +diff --git a/README.rst b/README.rst +index 7b757ed..709d82f 100644 +--- a/README.rst ++++ b/README.rst +@@ -1,3 +1,10 @@ ++Status of this repository ++========================= ++ ++This repository is based upon ++https://github.com/varnish/varnish-modules with necessary adjustments ++for varnish-cache master. It is being maintained by https://uplex.de/ ++ + Varnish module collection by Varnish Software + ============================================= + +@@ -49,14 +56,13 @@ If you are using the distro provided packages:: + + Then proceed to the configure and build:: + +- ./bootstrap # If running from git. + ./configure + make + make check # optional + sudo make install + + +-The resulting loadable modules (``libvmod_foo*.so`` files) will be installed to ++The resulting loadable modules (``libvmod_*.so`` files) will be installed to + the Varnish module directory. (default `/usr/lib/varnish/vmods/`) + + +@@ -86,6 +92,18 @@ The source git tree lives on Github: https://github.com/varnish/varnish-modules + All source code is placed in the master git branch. Pull requests and issue + reporting are appreciated. + ++Unlike building from releases, you need to first bootstrap the build system ++when you work from git:: ++ ++ ./bootstrap ++ ./configure ++ make ++ make check # recommended ++ ++If the ``configure`` step succeeds but the ``make`` step fails, check for ++warnings in the ``./configure`` output or the ``config.log`` file. You may be ++missing bootstrap dependencies not required by release archives. ++ + Porting + ------- + +diff --git a/configure.ac b/configure.ac +index 294ece3..df55b41 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -7,7 +7,7 @@ AC_CONFIG_AUX_DIR([build-aux]) + AC_CONFIG_SRCDIR(src/vmod_cookie.vcc) + AC_CONFIG_HEADERS(config.h) + +-AM_INIT_AUTOMAKE([1.11 foreign]) ++AM_INIT_AUTOMAKE([1.12.2 foreign]) + AM_SILENT_RULES([yes]) + AM_EXTRA_RECURSIVE_TARGETS([rst-docs]) + +diff --git a/docs/vmod_cookie.rst b/docs/vmod_cookie.rst +index d7a3666..892fe40 100644 +--- a/docs/vmod_cookie.rst ++++ b/docs/vmod_cookie.rst +@@ -4,25 +4,42 @@ + .. Edit vmod.vcc and run make instead + .. + +-.. role:: ref(emphasis) + +-.. _vmod_cookie(3): +- +-=========== +-vmod_cookie +-=========== ++:tocdepth: 1 + +---------------------- +-Varnish Cookie Module +---------------------- ++.. _vmod_cookie(3): + +-:Manual section: 3 ++=================================== ++VMOD cookie - Varnish Cookie Module ++=================================== + + SYNOPSIS + ======== + +-import cookie [from "path"] ; +- ++.. parsed-literal:: ++ ++ import cookie [from "path"] ++ ++ :ref:`vmod_cookie.clean` ++ ++ :ref:`vmod_cookie.delete` ++ ++ :ref:`vmod_cookie.filter` ++ ++ :ref:`vmod_cookie.filter_except` ++ ++ :ref:`vmod_cookie.format_rfc1123` ++ ++ :ref:`vmod_cookie.get` ++ ++ :ref:`vmod_cookie.get_string` ++ ++ :ref:`vmod_cookie.isset` ++ ++ :ref:`vmod_cookie.parse` ++ ++ :ref:`vmod_cookie.set` ++ + DESCRIPTION + =========== + +@@ -34,8 +51,8 @@ but a set comma-separated list of cookies. A filter() method removes a comma- + separated list of cookies. + + A convenience function for formatting the Set-Cookie Expires date field +-is also included. To actually manipulate the Set-Cookie response headers, +-vmod-header should be used instead though. ++is also included. If there are multiple Set-Cookie headers vmod-header ++should be used. + + The state loaded with cookie.parse() has a lifetime of the current request + or backend request context. To pass variables to the backend request, store +@@ -71,28 +88,11 @@ Filtering example:: + + .. vcl-end + +-CONTENTS +-======== +- +-* :ref:`func_clean` +-* :ref:`func_delete` +-* :ref:`func_filter` +-* :ref:`func_filter_except` +-* :ref:`func_format_rfc1123` +-* :ref:`func_get` +-* :ref:`func_get_string` +-* :ref:`func_isset` +-* :ref:`func_parse` +-* :ref:`func_set` + +-.. _func_clean: ++.. _vmod_cookie.clean: + +-clean +------ +- +-:: +- +- VOID clean(PRIV_TASK) ++VOID clean() ++------------ + + Description + Clean up previously parsed cookies. It is not necessary to run clean() +@@ -104,14 +104,10 @@ Example + cookie.clean(); + } + +-.. _func_delete: +- +-delete +------- +- +-:: ++.. _vmod_cookie.delete: + +- VOID delete(PRIV_TASK, STRING cookiename) ++VOID delete(STRING cookiename) ++------------------------------ + + Description + Delete `cookiename` from internal vmod storage if it exists. +@@ -125,14 +121,10 @@ Example + // get_string() will now yield "cookie1: value1"; + } + +-.. _func_filter: ++.. _vmod_cookie.filter: + +-filter +------- +- +-:: +- +- VOID filter(PRIV_TASK, STRING filterstring) ++VOID filter(STRING filterstring) ++-------------------------------- + + Description + Delete all cookies from internal vmod storage that are in the +@@ -148,14 +140,10 @@ Example + // "cookie3: value3"; + } + +-.. _func_filter_except: +- +-filter_except +-------------- +- +-:: ++.. _vmod_cookie.filter_except: + +- VOID filter_except(PRIV_TASK, STRING filterstring) ++VOID filter_except(STRING filterstring) ++--------------------------------------- + + Description + Delete all cookies from internal vmod storage that is not in the +@@ -170,14 +158,10 @@ Example + // "cookie1: value1; cookie2: value2;"; + } + +-.. _func_format_rfc1123: ++.. _vmod_cookie.format_rfc1123: + +-format_rfc1123 +--------------- +- +-:: +- +- STRING format_rfc1123(TIME now, DURATION timedelta) ++STRING format_rfc1123(TIME now, DURATION timedelta) ++--------------------------------------------------- + + Description + Get a RFC1123 formatted date string suitable for inclusion in a +@@ -193,14 +177,10 @@ Example + set resp.http.Set-Cookie = "userid=" + req.http.userid + "; Expires=" + cookie.format_rfc1123(now, 5m) + "; httpOnly"; + } + +-.. _func_get: +- +-get +---- +- +-:: ++.. _vmod_cookie.get: + +- STRING get(PRIV_TASK, STRING cookiename) ++STRING get(STRING cookiename) ++----------------------------- + + Description + Get the value of `cookiename`, as stored in internal vmod storage. If `cookiename` does not exist an empty string is returned. +@@ -213,14 +193,10 @@ Example + std.log("cookie1 value is: " + cookie.get("cookie1")); + } + +-.. _func_get_string: ++.. _vmod_cookie.get_string: + +-get_string +----------- +- +-:: +- +- STRING get_string(PRIV_TASK) ++STRING get_string() ++------------------- + + Description + Get a Cookie string value with all cookies in internal vmod storage. Does +@@ -234,14 +210,10 @@ Example + set req.http.cookie = cookie.get_string(); + } + +-.. _func_isset: +- +-isset +------ +- +-:: ++.. _vmod_cookie.isset: + +- BOOL isset(PRIV_TASK, STRING cookiename) ++BOOL isset(STRING cookiename) ++----------------------------- + + Description + Check if `cookiename` is set in the internal vmod storage. +@@ -257,14 +229,10 @@ Example + } + } + +-.. _func_parse: ++.. _vmod_cookie.parse: + +-parse +------ +- +-:: +- +- VOID parse(PRIV_TASK, STRING cookieheader) ++VOID parse(STRING cookieheader) ++------------------------------- + + Description + Parse the cookie string in `cookieheader`. If state already exists, clean() will be run first. +@@ -275,16 +243,10 @@ Example + cookie.parse(req.http.Cookie); + } + ++.. _vmod_cookie.set: + +- +-.. _func_set: +- +-set +---- +- +-:: +- +- VOID set(PRIV_TASK, STRING cookiename, STRING value) ++VOID set(STRING cookiename, STRING value) ++----------------------------------------- + + Description + Set the internal vmod storage for `cookiename` to `value`. +@@ -296,5 +258,3 @@ Example + cookie.set("cookie1", "value1"); + std.log("cookie1 value is: " + cookie.get("cookie1")); + } +- +- +diff --git a/docs/vmod_header.rst b/docs/vmod_header.rst +index 50f64db..1789727 100644 +--- a/docs/vmod_header.rst ++++ b/docs/vmod_header.rst +@@ -4,25 +4,30 @@ + .. Edit vmod.vcc and run make instead + .. + +-.. role:: ref(emphasis) + +-.. _vmod_header(3): ++:tocdepth: 1 + +-=========== +-vmod_header +-=========== +- +------------------------ +-Header VMOD for Varnish +------------------------ ++.. _vmod_header(3): + +-:Manual section: 3 ++===================================== ++VMOD header - Header VMOD for Varnish ++===================================== + + SYNOPSIS + ======== + +-import header [from "path"] ; +- ++.. parsed-literal:: ++ ++ import header [from "path"] ++ ++ :ref:`vmod_header.append` ++ ++ :ref:`vmod_header.copy` ++ ++ :ref:`vmod_header.get` ++ ++ :ref:`vmod_header.remove` ++ + DESCRIPTION + =========== + +@@ -51,22 +56,10 @@ Example:: + .. vcl-end + + +-CONTENTS +-======== +- +-* :ref:`func_append` +-* :ref:`func_copy` +-* :ref:`func_get` +-* :ref:`func_remove` +- +-.. _func_append: ++.. _vmod_header.append: + +-append +------- +- +-:: +- +- VOID append(HEADER, STRING) ++VOID append(HEADER, STRING) ++--------------------------- + + Description + Append an extra occurrence to an existing header. +@@ -74,14 +67,10 @@ Example + :: + header.append(beresp.http.Set-Cookie, "foo=bar") + +-.. _func_copy: +- +-copy +----- ++.. _vmod_header.copy: + +-:: +- +- VOID copy(HEADER, HEADER) ++VOID copy(HEADER, HEADER) ++------------------------- + + Description + Copy all source headers to a new header. +@@ -89,14 +78,10 @@ Example + :: + header.copy(beresp.http.set-cookie, beresp.http.x-old-cookie); + +-.. _func_get: +- +-get +---- ++.. _vmod_header.get: + +-:: +- +- STRING get(PRIV_CALL, HEADER header, STRING regex) ++STRING get(HEADER header, STRING regex) ++--------------------------------------- + + Description + Fetches the value of the first `header` that matches the given +@@ -105,17 +90,13 @@ Example + :: + set beresp.http.xusr = header.get(beresp.http.set-cookie,"user="); + +-.. _func_remove: +- +-remove +------- ++.. _vmod_header.remove: + +-:: +- +- VOID remove(PRIV_CALL, HEADER header, STRING regex) ++VOID remove(HEADER header, STRING regex) ++---------------------------------------- + + Description +- Remove all occurences of `header` that matches `regex`. ++ Remove all occurrences of `header` that matches `regex`. + Example + :: + header.remove(beresp.http.set-cookie,"^(?!(funcookie=))"); +@@ -135,4 +116,3 @@ BUGS + + You can't use dynamic regular expressions, which also holds true for normal + regular expressions in regsub(). +- +diff --git a/docs/vmod_saintmode.rst b/docs/vmod_saintmode.rst +index ceaaf44..801cc92 100644 +--- a/docs/vmod_saintmode.rst ++++ b/docs/vmod_saintmode.rst +@@ -4,26 +4,34 @@ + .. Edit vmod.vcc and run make instead + .. + +-.. role:: ref(emphasis) + +-.. _vmod_saintmode(3): +- +-============== +-vmod_saintmode +-============== ++:tocdepth: 1 + +---------------------------- +-Saint mode backend director +---------------------------- ++.. _vmod_saintmode(3): + +-:Manual section: 3 ++============================================ ++VMOD saintmode - Saint mode backend director ++============================================ + + SYNOPSIS + ======== + +-import saintmode [from "path"] ; +- +- ++.. parsed-literal:: ++ ++ import saintmode [from "path"] ++ ++ :ref:`vmod_saintmode.blacklist` ++ ++ :ref:`vmod_saintmode.status` ++ ++ :ref:`vmod_saintmode.saintmode` ++ ++ :ref:`vmod_saintmode.saintmode.backend` ++ ++ :ref:`vmod_saintmode.saintmode.blacklist_count` ++ ++ :ref:`vmod_saintmode.saintmode.is_healthy` ++ + DESCRIPTION + =========== + +@@ -95,23 +103,10 @@ Example:: + .. vcl-end + + +-CONTENTS +-======== +- +-* :ref:`func_blacklist` +-* :ref:`obj_saintmode` +-* :ref:`func_saintmode.backend` +-* :ref:`func_saintmode.blacklist_count` +-* :ref:`func_status` +- +-.. _func_blacklist: +- +-blacklist +---------- +- +-:: ++.. _vmod_saintmode.blacklist: + +- VOID blacklist(PRIV_VCL, DURATION expires) ++VOID blacklist(DURATION expires) ++-------------------------------- + + Marks the backend as sick for a specific object. Used in vcl_backend_response. + Corresponds to the use of ``beresp.saintmode`` in Varnish 3.0. Only available +@@ -126,15 +121,10 @@ Example:: + } + } + ++.. _vmod_saintmode.status: + +-.. _func_status: +- +-status +------- +- +-:: +- +- STRING status(PRIV_VCL) ++STRING status() ++--------------- + + Returns a JSON formatted status string suitable for use in vcl_synth. + +@@ -164,38 +154,33 @@ Example JSON output: + ] + } + ++.. _vmod_saintmode.saintmode: + +-.. _obj_saintmode: +- +-saintmode +---------- ++new xsaintmode = saintmode.saintmode(BACKEND backend, INT threshold) ++-------------------------------------------------------------------- + + :: + +- new OBJ = saintmode(PRIV_VCL, BACKEND backend, INT threshold) ++ new xsaintmode = saintmode.saintmode( ++ BACKEND backend, ++ INT threshold ++ ) + + Constructs a saintmode director object. The ``threshold`` argument sets + the saintmode threshold, which is the maximum number of items that can be + blacklisted before the whole backend is regarded as sick. Corresponds with the + ``saintmode_threshold`` parameter of Varnish 3.0. + +-Setting threshold to 0 disables saintmode, not the threshold. +- + Example:: + + sub vcl_init { + new sm = saintmode.saintmode(b, 10); + } + ++.. _vmod_saintmode.saintmode.backend: + +-.. _func_saintmode.backend: +- +-saintmode.backend +------------------ +- +-:: +- +- BACKEND saintmode.backend() ++BACKEND xsaintmode.backend() ++---------------------------- + + Used for assigning the backend from the saintmode object. + +@@ -205,15 +190,10 @@ Example:: + set bereq.backend = sm.backend(); + } + ++.. _vmod_saintmode.saintmode.blacklist_count: + +-.. _func_saintmode.blacklist_count: +- +-saintmode.blacklist_count +-------------------------- +- +-:: +- +- INT saintmode.blacklist_count() ++INT xsaintmode.blacklist_count() ++-------------------------------- + + Returns the number of objects currently blacklisted for a saintmode + director object. +@@ -226,3 +206,11 @@ Example: + set resp.http.troublecount = sm.blacklist_count(); + } + ++.. _vmod_saintmode.saintmode.is_healthy: ++ ++BOOL xsaintmode.is_healthy() ++---------------------------- ++ ++Checks if the object is currently blacklisted for a saintmode director object. ++If there are no valid objects available (called from vcl_hit or vcl_recv), ++the function will fall back to the backend's health function. +diff --git a/docs/vmod_tcp.rst b/docs/vmod_tcp.rst +index b37c863..5015443 100644 +--- a/docs/vmod_tcp.rst ++++ b/docs/vmod_tcp.rst +@@ -4,25 +4,30 @@ + .. Edit vmod.vcc and run make instead + .. + +-.. role:: ref(emphasis) + +-.. _vmod_tcp(3): +- +-======== +-vmod_tcp +-======== ++:tocdepth: 1 + +--------- +-TCP vmod +--------- ++.. _vmod_tcp(3): + +-:Manual section: 3 ++=================== ++VMOD tcp - TCP vmod ++=================== + + SYNOPSIS + ======== + +-import tcp [from "path"] ; +- ++.. parsed-literal:: ++ ++ import tcp [from "path"] ++ ++ :ref:`vmod_tcp.congestion_algorithm` ++ ++ :ref:`vmod_tcp.dump_info` ++ ++ :ref:`vmod_tcp.get_estimated_rtt` ++ ++ :ref:`vmod_tcp.set_socket_pace` ++ + DESCRIPTION + =========== + +@@ -59,22 +64,10 @@ Example:: + .. vcl-end + + +-CONTENTS +-======== +- +-* :ref:`func_congestion_algorithm` +-* :ref:`func_dump_info` +-* :ref:`func_get_estimated_rtt` +-* :ref:`func_set_socket_pace` +- +-.. _func_congestion_algorithm: ++.. _vmod_tcp.congestion_algorithm: + +-congestion_algorithm +--------------------- +- +-:: +- +- INT congestion_algorithm(STRING algorithm) ++INT congestion_algorithm(STRING algorithm) ++------------------------------------------ + + Set the client socket congestion control algorithm to S. Returns 0 on success, and -1 on error. + +@@ -84,15 +77,10 @@ Example:: + set req.http.x-tcp = tcp.congestion_algorithm("cubic"); + } + ++.. _vmod_tcp.dump_info: + +-.. _func_dump_info: +- +-dump_info +---------- +- +-:: +- +- VOID dump_info() ++VOID dump_info() ++---------------- + + Write the contents of the TCP_INFO data structure into varnishlog. + +@@ -107,17 +95,10 @@ Example varnishlog output:: + - VCL_Log tcpi2: pmtu=1500 rtt=152000 rttvar=76000 snd_cwnd=10 advmss=1448 reordering=3 + - VCL_Log getsockopt() returned: cubic + ++.. _vmod_tcp.get_estimated_rtt: + +- +- +-.. _func_get_estimated_rtt: +- +-get_estimated_rtt +------------------ +- +-:: +- +- REAL get_estimated_rtt() ++REAL get_estimated_rtt() ++------------------------ + + Get the estimated round-trip-time for the client socket. Unit: milliseconds. + +@@ -127,15 +108,10 @@ Example:: + std.log("client is far away."); + } + ++.. _vmod_tcp.set_socket_pace: + +-.. _func_set_socket_pace: +- +-set_socket_pace +---------------- +- +-:: +- +- VOID set_socket_pace(INT) ++VOID set_socket_pace(INT) ++------------------------- + + Set socket pacing on client-side TCP connection to PACE KB/s. Network interface + used must be using a supported scheduler. (fq) +@@ -143,5 +119,3 @@ used must be using a supported scheduler. (fq) + Example:: + + tcp.set_socket_pace(1000); +- +- +diff --git a/docs/vmod_var.rst b/docs/vmod_var.rst +index d5f7a2d..fe7dcce 100644 +--- a/docs/vmod_var.rst ++++ b/docs/vmod_var.rst +@@ -4,26 +4,56 @@ + .. Edit vmod.vcc and run make instead + .. + +-.. role:: ref(emphasis) + +-.. _vmod_var(3): ++:tocdepth: 1 + +-======== +-vmod_var +-======== +- +--------------------------------- +-Variable support for Varnish VCL +--------------------------------- ++.. _vmod_var(3): + +-:Manual section: 3 ++=========================================== ++VMOD var - Variable support for Varnish VCL ++=========================================== + + SYNOPSIS + ======== + +-import var [from "path"] ; +- +- ++.. parsed-literal:: ++ ++ import var [from "path"] ++ ++ :ref:`vmod_var.set` ++ ++ :ref:`vmod_var.get` ++ ++ :ref:`vmod_var.global_set` ++ ++ :ref:`vmod_var.global_get` ++ ++ :ref:`vmod_var.set_int` ++ ++ :ref:`vmod_var.get_int` ++ ++ :ref:`vmod_var.set_string` ++ ++ :ref:`vmod_var.get_string` ++ ++ :ref:`vmod_var.set_real` ++ ++ :ref:`vmod_var.get_real` ++ ++ :ref:`vmod_var.set_duration` ++ ++ :ref:`vmod_var.get_duration` ++ ++ :ref:`vmod_var.set_ip` ++ ++ :ref:`vmod_var.get_ip` ++ ++ :ref:`vmod_var.set_backend` ++ ++ :ref:`vmod_var.get_backend` ++ ++ :ref:`vmod_var.clear` ++ + This VMOD implements basic variable support in VCL. + + It supports strings, integers and real numbers. There are methods to get and +@@ -82,183 +112,122 @@ Example:: + .. vcl-end + + +-CONTENTS +-======== +- +-* :ref:`func_clear` +-* :ref:`func_get` +-* :ref:`func_get_duration` +-* :ref:`func_get_int` +-* :ref:`func_get_ip` +-* :ref:`func_get_real` +-* :ref:`func_get_string` +-* :ref:`func_global_get` +-* :ref:`func_global_set` +-* :ref:`func_set` +-* :ref:`func_set_duration` +-* :ref:`func_set_int` +-* :ref:`func_set_ip` +-* :ref:`func_set_real` +-* :ref:`func_set_string` +- +-.. _func_set: ++.. _vmod_var.set: + +-set +---- +- +-:: +- +- VOID set(PRIV_TASK, STRING key, STRING value) ++VOID set(STRING key, STRING value) ++---------------------------------- + + Set `key` to `value`. + +-.. _func_get: +- +-get +---- ++.. _vmod_var.get: + +-:: +- +- STRING get(PRIV_TASK, STRING) ++STRING get(STRING) ++------------------ + + Get `key` with data type STRING. If stored `key` is not a STRING an empty string is returned. + +-.. _func_global_set: +- +-global_set +----------- ++.. _vmod_var.global_set: + +-:: ++VOID global_set(STRING, STRING) ++------------------------------- + +- VOID global_set(STRING, STRING) + +-.. _func_global_get: + +-global_get +----------- ++.. _vmod_var.global_get: + +-:: ++STRING global_get(STRING) ++------------------------- + +- STRING global_get(STRING) + +-.. _func_set_int: + +-set_int +-------- ++.. _vmod_var.set_int: + +-:: +- +- VOID set_int(PRIV_TASK, STRING key, INT value) ++VOID set_int(STRING key, INT value) ++----------------------------------- + + Set `key` to `value`. + +-.. _func_get_int: +- +-get_int +-------- +- +-:: ++.. _vmod_var.get_int: + +- INT get_int(PRIV_TASK, STRING key) ++INT get_int(STRING key) ++----------------------- + + Get `key` with data type INT. If stored `key` is not an INT zero will be returned. + +-.. _func_set_string: +- +-set_string +----------- +- +-:: ++.. _vmod_var.set_string: + +- VOID set_string(PRIV_TASK, STRING key, STRING value) ++VOID set_string(STRING key, STRING value) ++----------------------------------------- + + Identical to set(). + +-.. _func_get_string: ++.. _vmod_var.get_string: + +-get_string +----------- +- +-:: +- +- STRING get_string(PRIV_TASK, STRING key) ++STRING get_string(STRING key) ++----------------------------- + + Identical to get(). + +-.. _func_set_real: +- +-set_real +--------- ++.. _vmod_var.set_real: + +-:: +- +- VOID set_real(PRIV_TASK, STRING key, REAL value) ++VOID set_real(STRING key, REAL value) ++------------------------------------- + + Set `key` to `value`. + +-.. _func_get_real: +- +-get_real +--------- ++.. _vmod_var.get_real: + +-:: +- +- REAL get_real(PRIV_TASK, STRING key) ++REAL get_real(STRING key) ++------------------------- + + Get `key` with data type REAL. If stored `key` is not a REAL zero will be returned. + +-.. _func_set_duration: +- +-set_duration +------------- ++.. _vmod_var.set_duration: + +-:: +- +- VOID set_duration(PRIV_TASK, STRING key, DURATION value) ++VOID set_duration(STRING key, DURATION value) ++--------------------------------------------- + + Set `key` to `value`. + +-.. _func_get_duration: ++.. _vmod_var.get_duration: + +-get_duration +------------- +- +-:: +- +- DURATION get_duration(PRIV_TASK, STRING key) ++DURATION get_duration(STRING key) ++--------------------------------- + + Get `key` with data type DURATION. If stored `key` is not a DURATION zero will be returned. + +-.. _func_set_ip: ++.. _vmod_var.set_ip: + +-set_ip +------- ++VOID set_ip(STRING key, IP value) ++--------------------------------- + +-:: ++Set `key` to `value`. + +- VOID set_ip(PRIV_TASK, STRING key, IP value) ++.. _vmod_var.get_ip: + +-Set `key` to `value`. ++IP get_ip(STRING key) ++--------------------- + +-.. _func_get_ip: ++Get `key` with data type IP. If stored `key` is not an IP null will be returned. + +-get_ip +------- ++.. _vmod_var.set_backend: + +-:: ++VOID set_backend(STRING key, BACKEND value) ++------------------------------------------- + +- IP get_ip(PRIV_TASK, STRING key) ++Set `key` to `value`. + +-Get `key` with data type IP. If stored `key` is not an IP null will be returned. ++.. _vmod_var.get_backend: + +-.. _func_clear: ++BACKEND get_backend(STRING key) ++------------------------------- + +-clear +------ ++Get `key` with data type BACKEND. If stored `key` is not a BACKEND, ++null will be returned. + +-:: ++.. _vmod_var.clear: + +- VOID clear(PRIV_TASK) ++VOID clear() ++------------ + + Clear all non-global variables. +- +diff --git a/docs/vmod_vsthrottle.rst b/docs/vmod_vsthrottle.rst +index 2593224..403aa7f 100644 +--- a/docs/vmod_vsthrottle.rst ++++ b/docs/vmod_vsthrottle.rst +@@ -4,25 +4,30 @@ + .. Edit vmod.vcc and run make instead + .. + +-.. role:: ref(emphasis) + +-.. _vmod_vsthrottle(3): +- +-=============== +-vmod_vsthrottle +-=============== ++:tocdepth: 1 + +---------------- +-Throttling VMOD +---------------- ++.. _vmod_vsthrottle(3): + +-:Manual section: 3 ++================================= ++VMOD vsthrottle - Throttling VMOD ++================================= + + SYNOPSIS + ======== + +-import vsthrottle [from "path"] ; +- ++.. parsed-literal:: ++ ++ import vsthrottle [from "path"] ++ ++ :ref:`vmod_vsthrottle.is_denied` ++ ++ :ref:`vmod_vsthrottle.return_token` ++ ++ :ref:`vmod_vsthrottle.remaining` ++ ++ :ref:`vmod_vsthrottle.blocked` ++ + DESCRIPTION + =========== + +@@ -37,6 +42,12 @@ The request rate is specified as the number of requests permitted over + a period. To keep things simple, this is passed as two separate + parameters, 'limit' and 'period'. + ++If an optional duration 'block' is specified, then access is denied ++altogether for that period of time after the rate limit is ++reached. This is a way to entirely turn away a particularly ++troublesome source of traffic for a while, rather than let them back ++in as soon as the rate slips back under the threshold. ++ + This VMOD implements a `token bucket algorithm`_. State associated + with the token bucket for each key is stored in-memory using BSD's + red-black tree implementation. +@@ -58,8 +69,9 @@ Example:: + sub vcl_recv { + # Varnish will set client.identity for you based on client IP. + +- if (vsthrottle.is_denied(client.identity, 15, 10s)) { +- # Client has exceeded 15 reqs per 10s ++ if (vsthrottle.is_denied(client.identity, 15, 10s, 30s)) { ++ # Client has exceeded 15 reqs per 10s. ++ # When this happens, block altogether for the next 30s. + return (synth(429, "Too Many Requests")); + } + +@@ -78,33 +90,37 @@ Example:: + + .. vcl-end + +-CONTENTS +-======== +- +-* :ref:`func_is_denied` +-* :ref:`func_remaining` + +-.. _func_is_denied: ++.. _vmod_vsthrottle.is_denied: + +-is_denied +---------- ++BOOL is_denied(STRING key, INT limit, DURATION period, DURATION block) ++---------------------------------------------------------------------- + + :: + +- BOOL is_denied(STRING key, INT limit, DURATION period) ++ BOOL is_denied( ++ STRING key, ++ INT limit, ++ DURATION period, ++ DURATION block=0 ++ ) + + Arguments: + + - key: A unique identifier to define what is being throttled - more examples below + - limit: How many requests in the specified period + - period: The time period ++ - block: a period to deny all access after hitting the threshold. Default is 0s + + Description + Can be used to rate limit the traffic for a specific key to a +- maximum of 'limit' requests per 'period' time. A token bucket +- is uniquely identified by the triplet of its key, limit and +- period, so using the same key multiple places with different +- rules will create multiple token buckets. ++ maximum of 'limit' requests per 'period' time. If 'block' is > 0s, ++ (0s by default), then always deny for 'key' for that length of time ++ after hitting the threshold. ++ ++ Note: A token bucket is uniquely identified by the 4-tuple of its ++ key, limit, period and block, so using the same key multiple places ++ with different rules will create multiple token buckets. + + Example + :: +@@ -118,20 +134,69 @@ Example + # ... + } + ++.. _vmod_vsthrottle.return_token: ++ ++VOID return_token(STRING key, INT limit, DURATION period, DURATION block) ++------------------------------------------------------------------------- ++ ++:: ++ ++ VOID return_token( ++ STRING key, ++ INT limit, ++ DURATION period, ++ DURATION block=0 ++ ) + +-.. _func_remaining: ++Arguments: ++ - Same arguments as is_denied() ++ ++Description ++ Increment (by one) the number of tokens in the specified bucket. is_denied() ++ decrements the bucket by one token and return_token() adds it back. ++ Using these two, you can effectively make a token bucket act like a limit on ++ concurrent requests instead of requests / time. ++ ++ Note: This function doesn't enforce anything, it merely credits a token to ++ appropriate bucket. ++ ++ Warning: If streaming is enabled (beresp.do_stream = true) as it is by ++ default now, vcl_deliver() is called *before* the response is sent ++ to the client (who may download it slowly). Thus you may credit the token ++ back too early if you use return_token() in vcl_backend_response(). ++ ++Example ++ :: + +-remaining +---------- ++ sub vcl_recv { ++ if (vsthrottle.is_denied(client.identity, 20, 20s)) { ++ # Client has more than 20 concurrent requests ++ return (synth(429, "Too Many Requests In Flight")); ++ } ++ ++ # ... ++ } ++ ++ sub vcl_deliver { ++ vsthrottle.return_token(client.identity, 10, 10s); ++ } ++ ++.. _vmod_vsthrottle.remaining: ++ ++INT remaining(STRING key, INT limit, DURATION period, DURATION block) ++--------------------------------------------------------------------- + + :: + +- INT remaining(STRING key, INT limit, DURATION period) ++ INT remaining( ++ STRING key, ++ INT limit, ++ DURATION period, ++ DURATION block=0 ++ ) + + Arguments: +- - key: A unique identifier to define what is being throttled +- - limit: How many requests in the specified period +- - period: The time period ++ - Same arguments as is_denied() + + Description + +@@ -147,3 +212,36 @@ Example + set resp.http.X-RateLimit-Remaining = vsthrottle.remaining(client.identity, 15, 10s); + } + ++.. _vmod_vsthrottle.blocked: ++ ++DURATION blocked(STRING key, INT limit, DURATION period, DURATION block) ++------------------------------------------------------------------------ ++ ++:: ++ ++ DURATION blocked( ++ STRING key, ++ INT limit, ++ DURATION period, ++ DURATION block ++ ) ++ ++Arguments: ++ - Same arguments as is_denied() ++ ++Description ++ ++ If the token bucket identified by the four parameters has been ++ blocked by use of the 'block' parameter in 'is_denied()', then ++ return the time remaining in the block. If it is not blocked, ++ return 0s. This can be used to inform clients how long they ++ will be locked out. ++ ++ ++Example ++ :: ++ ++ sub vcl_deliver { ++ set resp.http.Retry-After ++ = vsthrottle.blocked(client.identity, 15, 10s, 30s); ++ } +diff --git a/docs/vmod_xkey.rst b/docs/vmod_xkey.rst +index 40c22c2..86da183 100644 +--- a/docs/vmod_xkey.rst ++++ b/docs/vmod_xkey.rst +@@ -4,25 +4,26 @@ + .. Edit vmod.vcc and run make instead + .. + +-.. role:: ref(emphasis) + +-.. _vmod_xkey(3): +- +-========= +-vmod_xkey +-========= ++:tocdepth: 1 + +----------------------------------------- +-Surrogate keys support for Varnish Cache +----------------------------------------- ++.. _vmod_xkey(3): + +-:Manual section: 3 ++==================================================== ++VMOD xkey - Surrogate keys support for Varnish Cache ++==================================================== + + SYNOPSIS + ======== + +-import xkey [from "path"] ; ++.. parsed-literal:: + ++ import xkey [from "path"] ++ ++ :ref:`vmod_xkey.purge` ++ ++ :ref:`vmod_xkey.softpurge` ++ + DESCRIPTION + =========== + +@@ -39,13 +40,13 @@ Similarly with an e-commerce site, where various SKUs are often + referenced on a page. + + Hash keys are specified in the ``xkey`` response header. Multiple keys +-can be specified per header line with a space +-separator. Alternatively, they can be specified in multiple ``xkey`` ++can be specified per header line with spaces and/or commas as ++separators. Alternatively, they can be specified in multiple ``xkey`` + response headers. + + Preferably the secondary hash keys are set from the backend +-application, but can also be set from VCL in ``vcl_backend_response`` +-as in the above example. ++application, but the header can also be set from VCL in ++``vcl_backend_response``. + + .. vcl-start + +@@ -65,10 +66,14 @@ VCL example:: + if (client.ip !~ purgers) { + return (synth(403, "Forbidden")); + } +- set req.http.n-gone = xkey.purge(req.http.xkey-purge); +- # or: set req.http.n-gone = xkey.softpurge(req.http.xkey-purge) +- +- return (synth(200, "Invalidated "+req.http.n-gone+" objects")); ++ if (req.http.xkey) { ++ set req.http.n-gone = xkey.purge(req.http.xkey); ++ # or: set req.http.n-gone = xkey.softpurge(req.http.xkey) ++ ++ return (synth(200, "Invalidated "+req.http.n-gone+" objects")); ++ } else { ++ return (purge); ++ } + } + } + +@@ -88,9 +93,6 @@ header for a certain page might look like this:: + xkey: 166412 + xkey: 234323 + +-Alternatively you may instead use a single header with space separated +-values like ``xkey: 8155054 166412 234323``. +- + This requires a bit of VCL to be in place. The VCL can be found above. + + Then, in order to keep the web in sync with the database, a trigger is +@@ -98,17 +100,10 @@ set up in the database. When an SKU is updated this will trigger an + HTTP request towards the Varnish server, clearing out every object + with the matching xkey header:: + +- PURGE / HTTP/1.1 ++ GET / HTTP/1.1 + Host: www.example.com + xkey-purge: 166412 + +-Several ``xkey-purge`` headers are also supported like in the response +-example above, and you may also here use a single header with space +-seperated values like ``xkey-purge: 166412 234323``. +- +-Unlike `xkey` header for responses, purge header is fully configurable +-by means of adjusting the name of the header in the VCL example above. +- + Note the xkey-purge header. It is probably a good idea to protect + this with an ACL so random people from the Internet cannot purge your + cache. +@@ -122,20 +117,11 @@ Varnish will find the objects and clear them out, responding with:: + + The objects are now cleared. + +-CONTENTS +-======== +- +-* :ref:`func_purge` +-* :ref:`func_softpurge` +- +-.. _func_purge: + +-purge +------ ++.. _vmod_xkey.purge: + +-:: +- +- INT purge(STRING keys) ++INT purge(STRING keys) ++---------------------- + + Description + Purges all objects hashed on any key found in the ``keys`` argument. +@@ -143,15 +129,10 @@ Description + + The ``keys`` may contain a list of space-separated ids. + ++.. _vmod_xkey.softpurge: + +-.. _func_softpurge: +- +-softpurge +---------- +- +-:: +- +- INT softpurge(STRING keys) ++INT softpurge(STRING keys) ++-------------------------- + + Description + Performs a "soft purge" for all objects hashed on any key found in the +@@ -160,5 +141,3 @@ Description + A softpurge differs from a regular purge in that it resets an + object's TTL but keeps it available for grace mode and conditional + requests for the remainder of its configured grace and keep time. +- +- +diff --git a/src/Makefile.am b/src/Makefile.am +index 36ca267..6a4b48a 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -143,6 +143,7 @@ VMOD_TESTS = \ + tests/vsthrottle/test01.vtc \ + tests/vsthrottle/test02.vtc \ + tests/vsthrottle/test03.vtc \ ++ tests/vsthrottle/test04.vtc \ + tests/xkey/test01.vtc \ + tests/xkey/test02.vtc \ + tests/xkey/test03.vtc \ +@@ -150,7 +151,8 @@ VMOD_TESTS = \ + tests/xkey/test05.vtc \ + tests/xkey/test06.vtc \ + tests/xkey/test07.vtc \ +- tests/xkey/test08.vtc ++ tests/xkey/test08.vtc \ ++ tests/xkey/test09.vtc + + SOFTPURGE_TESTS = \ + tests/softpurge/01-load.vtc \ +diff --git a/src/tests/saintmode/test02.vtc b/src/tests/saintmode/test02.vtc +index aa97734..bd8b537 100644 +--- a/src/tests/saintmode/test02.vtc ++++ b/src/tests/saintmode/test02.vtc +@@ -51,6 +51,8 @@ varnish v1 -vcl+backend { + + } -start + ++varnish v1 -cliok "backend.list" ++ + client c1 { + txreq -url "/a" + rxresp +diff --git a/src/tests/tcp/02-congestion.vtc b/src/tests/tcp/02-congestion.vtc +index 2972f6d..e0c09a6 100644 +--- a/src/tests/tcp/02-congestion.vtc ++++ b/src/tests/tcp/02-congestion.vtc +@@ -20,9 +20,12 @@ varnish v1 -vcl+backend { + client c1 { + txreq -url "/" + rxresp +- expect resp.http.a == "0" +- expect resp.http.b == "-1" +- expect resp.http.c == "0" ++ # XXX: it would be better to skip the test altogether when we ++ # don't have struct tcp_info available on the system. ++ # See https://github.com/varnish/varnish-modules/issues/115 ++ expect resp.http.a <= 0 ++ expect resp.http.b == -1 ++ expect resp.http.c <= 0 + } + + client c1 -run +diff --git a/src/tests/vsthrottle/test04.vtc b/src/tests/vsthrottle/test04.vtc +new file mode 100644 +index 0000000..bef9ecf +--- /dev/null ++++ b/src/tests/vsthrottle/test04.vtc +@@ -0,0 +1,40 @@ ++varnishtest "Test vsthrottle return_token()" ++ ++server s1 { ++ rxreq ++ txresp ++} -start ++ ++varnish v1 -vcl+backend { ++ import vsthrottle from "${vmod_builddir}/.libs/libvmod_vsthrottle.so"; ++ ++ sub vcl_deliver { ++ set resp.http.foo-count0 = vsthrottle.remaining("foo", 1, 1s); ++ if (!vsthrottle.is_denied("foo", 1, 1s)) { ++ set resp.http.f1 = "OK"; ++ } ++ set resp.http.foo-count1 = vsthrottle.remaining("foo", 1, 1s); ++ ++ if (!vsthrottle.is_denied("foo", 1, 1s)) { ++ set resp.http.f2 = "OK"; ++ } ++ set resp.http.foo-count2 = vsthrottle.remaining("foo", 1, 1s); ++ ++ vsthrottle.return_token("foo", 1, 1s); ++ ++ set resp.http.foo-count3 = vsthrottle.remaining("foo", 1, 1s); ++ } ++} -start ++ ++client c1 { ++ txreq -url "/" ++ rxresp ++ expect resp.http.foo-count0 == "1" ++ expect resp.http.f1 == "OK" ++ expect resp.http.foo-count1 == "0" ++ expect resp.http.f2 == ++ expect resp.http.foo-count2 == "0" ++ expect resp.http.foo-count3 == "1" ++} ++ ++client c1 -run +diff --git a/src/tests/xkey/test09.vtc b/src/tests/xkey/test09.vtc +new file mode 100644 +index 0000000..c010c37 +--- /dev/null ++++ b/src/tests/xkey/test09.vtc +@@ -0,0 +1,66 @@ ++varnishtest "Test xkey vmod multiple keys, comma separated" ++# https://github.com/varnish/varnish-modules/issues/102 ++ ++server s1 { ++ rxreq ++ txresp -hdr "xkey: asdf, fdsa" ++ ++ rxreq ++ txresp -hdr "xkey: qwer, rewq" ++} -start ++ ++varnish v1 -vcl+backend { ++ import xkey from "${vmod_builddir}/.libs/libvmod_xkey.so"; ++ ++ sub vcl_recv { ++ if (req.http.xkey-purge) { ++ if (xkey.purge(req.http.xkey-purge) != 0) { ++ return (synth(200, "Purged")); ++ } else { ++ return (synth(404, "No key")); ++ } ++ } ++ } ++ ++ sub vcl_backend_response { ++ set beresp.ttl = 60s; ++ set beresp.grace = 0s; ++ set beresp.keep = 0s; ++ } ++ ++ sub vcl_synth { ++ set resp.http.reason = resp.reason; ++ } ++} -start ++ ++client c1 { ++ txreq ++ rxresp ++ txreq -url /2 ++ rxresp ++} -run ++ ++varnish v1 -expect n_object == 2 ++ ++client c1 { ++ # Test the purge using the asdf key, so we check that we didn't include the comma ++ txreq -hdr "xkey-purge: asdf" ++ rxresp ++ expect resp.status == 200 ++ expect resp.http.reason == "Purged" ++} -run ++ ++delay 1 ++ ++varnish v1 -expect n_object == 1 ++ ++client c1 { ++ txreq -hdr "xkey-purge: rewq" ++ rxresp ++ expect resp.status == 200 ++ expect resp.http.reason == "Purged" ++} -run ++ ++delay 1 ++ ++varnish v1 -expect n_object == 0 +diff --git a/src/vmod_bodyaccess.c b/src/vmod_bodyaccess.c +index d1f324f..a8a8951 100644 +--- a/src/vmod_bodyaccess.c ++++ b/src/vmod_bodyaccess.c +@@ -114,6 +114,26 @@ bodyaccess_log_cb(struct req *req, void *priv, void *ptr, size_t len) + + return (bodyaccess_log(priv, ptr, len)); + } ++#elif defined(HAVE_OBJITERATE_F) && defined(OBJ_ITER_FLUSH) ++static int ++bodyaccess_bcat_cb(void *priv, unsigned flush, const void *ptr, ssize_t len) ++{ ++ ++ AN(priv); ++ ++ (void)flush; ++ return (VSB_bcat(priv, ptr, len)); ++} ++ ++static int ++bodyaccess_log_cb(void *priv, unsigned flush, const void *ptr, ssize_t len) ++{ ++ ++ AN(priv); ++ ++ (void)flush; ++ return (bodyaccess_log(priv, ptr, len)); ++} + #elif defined(HAVE_OBJITERATE_F) + static int + bodyaccess_bcat_cb(void *priv, int flush, const void *ptr, ssize_t len) +@@ -187,6 +207,8 @@ vmod_hash_req_body(VRT_CTX) + VCL_INT + vmod_len_req_body(VRT_CTX) + { ++ uint64_t u; ++ + CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); + CHECK_OBJ_NOTNULL(ctx->req, REQ_MAGIC); + +@@ -202,7 +224,10 @@ vmod_len_req_body(VRT_CTX) + return (-1); + } + +- return (ctx->req->req_bodybytes); ++ AZ(ObjGetU64(ctx->req->wrk, ctx->req->body_oc, OA_LEN, &u)); ++ AZ(u > INT64_MAX); ++ ++ return ((VCL_INT)u); + } + + VCL_INT +diff --git a/src/vmod_bodyaccess.vcc b/src/vmod_bodyaccess.vcc +index d5cdf61..55666fc 100644 +--- a/src/vmod_bodyaccess.vcc ++++ b/src/vmod_bodyaccess.vcc +@@ -1,4 +1,4 @@ +-$Module bodyaccess 3 Varnish Module for request body access ++$Module bodyaccess 3 "Varnish Module for request body access" + + DESCRIPTION + =========== +diff --git a/src/vmod_cookie.vcc b/src/vmod_cookie.vcc +index edd383a..0f49bad 100644 +--- a/src/vmod_cookie.vcc ++++ b/src/vmod_cookie.vcc +@@ -1,4 +1,4 @@ +-$Module cookie 3 Varnish Cookie Module ++$Module cookie 3 "Varnish Cookie Module" + DESCRIPTION + =========== + +diff --git a/src/vmod_header.c b/src/vmod_header.c +index 798afdb..ea6b5d5 100644 +--- a/src/vmod_header.c ++++ b/src/vmod_header.c +@@ -193,7 +193,7 @@ header_http_cphdr(VRT_CTX, const struct http *hp, const char *hdr, + * vmod entrypoint. Sets up the header mutex. + */ + int +-event_function(VRT_CTX, struct vmod_priv *priv, enum vcl_event_e e) ++vmod_event_function(VRT_CTX, struct vmod_priv *priv, enum vcl_event_e e) + { + (void)ctx; + (void)priv; +diff --git a/src/vmod_header.vcc b/src/vmod_header.vcc +index 5df8dc6..4a5b27c 100644 +--- a/src/vmod_header.vcc ++++ b/src/vmod_header.vcc +@@ -1,4 +1,4 @@ +-$Module header 3 Header VMOD for Varnish ++$Module header 3 "Header VMOD for Varnish" + DESCRIPTION + =========== + +@@ -57,7 +57,7 @@ Example + $Function VOID remove(PRIV_CALL, HEADER header, STRING regex) + + Description +- Remove all occurences of `header` that matches `regex`. ++ Remove all occurrences of `header` that matches `regex`. + Example + :: + header.remove(beresp.http.set-cookie,"^(?!(funcookie=))"); +diff --git a/src/vmod_saintmode.c b/src/vmod_saintmode.c +index 26191cc..b0e4ac6 100644 +--- a/src/vmod_saintmode.c ++++ b/src/vmod_saintmode.c +@@ -35,14 +35,16 @@ + + #include "vmod_config.h" + +-#include "cache/cache_director.h" +-#include "cache/cache_backend.h" +- + #include "vsb.h" + #include "vtim.h" + + #include "vcc_saintmode_if.h" + ++static VCL_BOOL v_matchproto_(vdi_healthy_f) ++healthy(VRT_CTX, VCL_BACKEND, VCL_TIME *); ++static VCL_BACKEND v_matchproto_(vdi_resolve_f) ++resolve(VRT_CTX, VCL_BACKEND); ++ + struct trouble { + unsigned magic; + #define TROUBLE_MAGIC 0x4211ab21 +@@ -54,7 +56,7 @@ struct trouble { + struct vmod_saintmode_saintmode { + unsigned magic; + #define VMOD_SAINTMODE_MAGIC 0xa03756e4 +- struct director sdir[1]; ++ const struct director *sdir; + const struct director *be; + pthread_mutex_t mtx; + unsigned threshold; +@@ -63,6 +65,14 @@ struct vmod_saintmode_saintmode { + VTAILQ_HEAD(, trouble) troublelist; + }; + ++static const struct vdi_methods vmod_saintmode_methods[1] = {{ ++ .magic = VDI_METHODS_MAGIC, ++ .type = "saintmode", ++ .healthy = healthy, ++ .resolve = resolve ++}}; ++ ++ + struct saintmode_objs { + unsigned magic; + #define SAINTMODE_OBJS_MAGIC 0x9aa7beec +@@ -253,23 +263,26 @@ is_digest_healthy(const struct director *dir, + } + + /* All adapted from PHK's saintmode implementation in Varnish 3.0 */ +-static unsigned +-healthy(const struct director *dir, const struct busyobj *bo, double *changed) ++static VCL_BOOL v_matchproto_(vdi_healthy_f) ++healthy(VRT_CTX, VCL_BACKEND dir, VCL_TIME *changed) + { + struct vmod_saintmode_saintmode *sm; ++ const struct busyobj *bo; + unsigned retval; + const uint8_t* digest; + double t_prev; + struct vsl_log* vsl; + ++ CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); + CHECK_OBJ_NOTNULL(dir, DIRECTOR_MAGIC); + CAST_OBJ_NOTNULL(sm, dir->priv, VMOD_SAINTMODE_MAGIC); + CHECK_OBJ_NOTNULL(sm->be, DIRECTOR_MAGIC); ++ bo = ctx->bo; + CHECK_OBJ_ORNULL(bo, BUSYOBJ_MAGIC); + + /* Saintmode is disabled, or list is empty */ + if (sm->threshold == 0 || sm->n_trouble == 0) +- return (sm->be->healthy(sm->be, bo, changed)); ++ return (VRT_Healthy(ctx, sm->be, changed)); + + if (!bo) { + digest = NULL; +@@ -282,7 +295,7 @@ healthy(const struct director *dir, const struct busyobj *bo, double *changed) + } + + retval = is_digest_healthy(dir, digest, t_prev, vsl); +- return (retval ? sm->be->healthy(sm->be, bo, changed) : 0); ++ return (retval ? VRT_Healthy(ctx, sm->be, changed) : 0); + } + + VCL_BOOL +@@ -303,19 +316,17 @@ vmod_saintmode_is_healthy(VRT_CTX, struct vmod_saintmode_saintmode *sm) + return is_digest_healthy(sm->sdir, digest, + ctx->req->t_prev, ctx->req->vsl); + } else +- return healthy(sm->sdir, ctx->bo, NULL); ++ return healthy(ctx, sm->sdir, NULL); + } + +-static const struct director * +-resolve(const struct director *dir, struct worker *wrk, struct busyobj *bo) { ++static VCL_BACKEND v_matchproto_(vdi_resolve_f) ++resolve(VRT_CTX, VCL_BACKEND dir) { + struct vmod_saintmode_saintmode *sm; +- double changed = 0.0; + + CHECK_OBJ_NOTNULL(dir, DIRECTOR_MAGIC); + CAST_OBJ_NOTNULL(sm, dir->priv, VMOD_SAINTMODE_MAGIC); +- (void)wrk; + +- if (!healthy(dir, bo, &changed)) ++ if (!healthy(ctx, dir, NULL)) + return (NULL); + + return (sm->be); +@@ -342,15 +353,7 @@ vmod_saintmode__init(VRT_CTX, struct vmod_saintmode_saintmode **smp, + sm->be = be; + VTAILQ_INIT(&sm->troublelist); + +- sm->sdir->magic = DIRECTOR_MAGIC; +- sm->sdir->resolve = resolve; +- sm->sdir->healthy = healthy; +-#ifdef HAVE_DIRECTOR_ADMIN_HEALTH +- sm->sdir->admin_health = VDI_AH_HEALTHY; +-#endif +- REPLACE(sm->sdir->vcl_name, vcl_name); +- sm->sdir->name = "saintmode"; +- sm->sdir->priv = sm; ++ sm->sdir = VRT_AddDirector(ctx, vmod_saintmode_methods, sm, "%s", vcl_name); + + if (!priv->priv) { + ALLOC_OBJ(sm_objs, SAINTMODE_OBJS_MAGIC); +@@ -380,7 +383,7 @@ vmod_saintmode__fini(struct vmod_saintmode_saintmode **smp) { + FREE_OBJ(tr); + } + +- free(sm->sdir->vcl_name); ++ VRT_DelDirector(&sm->sdir); + AZ(pthread_mutex_destroy(&sm->mtx)); + + /* We can no longer refer to the sm_objs after this +diff --git a/src/vmod_saintmode.vcc b/src/vmod_saintmode.vcc +index 4315e43..27f8ba0 100644 +--- a/src/vmod_saintmode.vcc ++++ b/src/vmod_saintmode.vcc +@@ -1,4 +1,4 @@ +-$Module saintmode 3 Saint mode backend director ++$Module saintmode 3 "Saint mode backend director" + + DESCRIPTION + =========== +diff --git a/src/vmod_softpurge.c b/src/vmod_softpurge.c +index 9273de5..0e46c25 100644 +--- a/src/vmod_softpurge.c ++++ b/src/vmod_softpurge.c +@@ -52,8 +52,12 @@ vmod_softpurge(VRT_CTX) + CHECK_OBJ_NOTNULL(ctx->req->wrk, WORKER_MAGIC); + oh = ctx->req->objcore->objhead; + CHECK_OBJ_NOTNULL(oh, OBJHEAD_MAGIC); +- spc = WS_Reserve(ctx->ws, 0); +- assert(spc >= sizeof *ocp); ++ spc = WS_ReserveAll(ctx->ws); ++ if (spc < sizeof *ocp) { ++ WS_Release(ctx->ws, 0); ++ VRT_fail(ctx, "insufficient workspace"); ++ return; ++ } + + nobj = 0; + ocp = (void*)ctx->ws->f; +diff --git a/src/vmod_softpurge.vcc b/src/vmod_softpurge.vcc +index 20252dd..aaf9a1c 100644 +--- a/src/vmod_softpurge.vcc ++++ b/src/vmod_softpurge.vcc +@@ -1,4 +1,4 @@ +-$Module softpurge Soft purge vmod ++$Module softpurge 3 "Soft purge vmod" + DESCRIPTION + =========== + +diff --git a/src/vmod_tcp.c b/src/vmod_tcp.c +index fee4bd3..570be45 100644 +--- a/src/vmod_tcp.c ++++ b/src/vmod_tcp.c +@@ -174,7 +174,7 @@ vmod_set_socket_pace(VRT_CTX, VCL_INT rate) + sizeof(pacerate)) != 0) + VSLb(ctx->vsl, SLT_VCL_Error, "set_socket_pace(): Error setting pace rate."); + else +- VSLb(ctx->vsl, SLT_VCL_Log, "vmod-tcp: Socket paced to %lu KB/s.", rate); ++ VSLb(ctx->vsl, SLT_VCL_Log, "vmod-tcp: Socket paced to %jd KB/s.", (intmax_t)rate); + + # ifndef NDEBUG + int retval; +diff --git a/src/vmod_tcp.vcc b/src/vmod_tcp.vcc +index 8659770..fddf7c6 100644 +--- a/src/vmod_tcp.vcc ++++ b/src/vmod_tcp.vcc +@@ -1,4 +1,4 @@ +-$Module tcp 3 TCP vmod ++$Module tcp 3 "TCP vmod" + DESCRIPTION + =========== + +diff --git a/src/vmod_var.vcc b/src/vmod_var.vcc +index 719b182..7af5cf1 100644 +--- a/src/vmod_var.vcc ++++ b/src/vmod_var.vcc +@@ -1,4 +1,4 @@ +-$Module var 3 Variable support for Varnish VCL ++$Module var 3 "Variable support for Varnish VCL" + + This VMOD implements basic variable support in VCL. + +diff --git a/src/vmod_vsthrottle.c b/src/vmod_vsthrottle.c +index ff1719c..e088860 100644 +--- a/src/vmod_vsthrottle.c ++++ b/src/vmod_vsthrottle.c +@@ -58,7 +58,7 @@ struct tbucket { + double block; + long tokens; + long capacity; +- VRB_ENTRY(tbucket) tree; ++ VRBT_ENTRY(tbucket) tree; + }; + + static int +@@ -67,9 +67,9 @@ keycmp(const struct tbucket *b1, const struct tbucket *b2) + return (memcmp(b1->digest, b2->digest, sizeof b1->digest)); + } + +-VRB_HEAD(tbtree, tbucket); +-VRB_PROTOTYPE_STATIC(tbtree, tbucket, tree, keycmp); +-VRB_GENERATE_STATIC(tbtree, tbucket, tree, keycmp); ++VRBT_HEAD(tbtree, tbucket); ++VRBT_PROTOTYPE_STATIC(tbtree, tbucket, tree, keycmp); ++VRBT_GENERATE_STATIC(tbtree, tbucket, tree, keycmp); + + /* To lessen potential mutex contention, we partition the buckets into + N_PART partitions. */ +@@ -119,12 +119,12 @@ get_bucket(const unsigned char *digest, long limit, double period, double now) + + INIT_OBJ(&k, TBUCKET_MAGIC); + memcpy(&k.digest, digest, sizeof k.digest); +- b = VRB_FIND(tbtree, &v->buckets, &k); ++ b = VRBT_FIND(tbtree, &v->buckets, &k); + if (b) { + CHECK_OBJ_NOTNULL(b, TBUCKET_MAGIC); + } else { + b = tb_alloc(digest, limit, period, now); +- AZ(VRB_INSERT(tbtree, &v->buckets, b)); ++ AZ(VRBT_INSERT(tbtree, &v->buckets, b)); + } + return (b); + } +@@ -205,6 +205,32 @@ vmod_is_denied(VRT_CTX, VCL_STRING key, VCL_INT limit, VCL_DURATION period, + return (ret); + } + ++VCL_VOID ++vmod_return_token(VRT_CTX, VCL_STRING key, VCL_INT limit, VCL_DURATION period, ++ VCL_DURATION block) ++{ ++ struct tbucket *b; ++ double now; ++ ++ struct vsthrottle *v; ++ unsigned char digest[SHA256_LEN]; ++ unsigned part; ++ ++ (void)ctx; ++ ++ if (!key) ++ return; ++ do_digest(digest, key, limit, period, block); ++ ++ part = digest[0] & N_PART_MASK; ++ v = &vsthrottle[part]; ++ AZ(pthread_mutex_lock(&v->mtx)); ++ now = VTIM_mono(); ++ b = get_bucket(digest, limit, period, now); ++ b->tokens++; ++ AZ(pthread_mutex_unlock(&v->mtx)); ++} ++ + /* Clean up expired entries. */ + static void + run_gc(double now, unsigned part) +@@ -213,11 +239,11 @@ run_gc(double now, unsigned part) + struct tbtree *buckets = &vsthrottle[part].buckets; + + /* XXX: Assert mtx is held ... */ +- VRB_FOREACH_SAFE(x, tbtree, buckets, y) { ++ VRBT_FOREACH_SAFE(x, tbtree, buckets, y) { + CHECK_OBJ_NOTNULL(x, TBUCKET_MAGIC); + if (now - x->last_used > x->period) { +- VRB_REMOVE(tbtree, buckets, x); +- free(x); ++ VRBT_REMOVE(tbtree, buckets, x); ++ FREE_OBJ(x); + } + } + } +@@ -291,9 +317,9 @@ fini(void *priv) + + for (p = 0; p < N_PART; ++p ) { + struct vsthrottle *v = &vsthrottle[p]; +- VRB_FOREACH_SAFE(x, tbtree, &v->buckets, y) { ++ VRBT_FOREACH_SAFE(x, tbtree, &v->buckets, y) { + CHECK_OBJ_NOTNULL(x, TBUCKET_MAGIC); +- VRB_REMOVE(tbtree, &v->buckets, x); ++ VRBT_REMOVE(tbtree, &v->buckets, x); + free(x); + } + } +@@ -302,7 +328,7 @@ fini(void *priv) + } + + int +-event_function(VRT_CTX, struct vmod_priv *priv, enum vcl_event_e e) ++vmod_event_function(VRT_CTX, struct vmod_priv *priv, enum vcl_event_e e) + { + if (e != VCL_EVENT_LOAD) + return (0); +@@ -318,7 +344,7 @@ event_function(VRT_CTX, struct vmod_priv *priv, enum vcl_event_e e) + struct vsthrottle *v = &vsthrottle[p]; + v->magic = VSTHROTTLE_MAGIC; + AZ(pthread_mutex_init(&v->mtx, NULL)); +- VRB_INIT(&v->buckets); ++ VRBT_INIT(&v->buckets); + } + } + n_init++; +diff --git a/src/vmod_vsthrottle.vcc b/src/vmod_vsthrottle.vcc +index 1f10080..72a8839 100644 +--- a/src/vmod_vsthrottle.vcc ++++ b/src/vmod_vsthrottle.vcc +@@ -1,4 +1,4 @@ +-$Module vsthrottle 3 Throttling VMOD ++$Module vsthrottle 3 "Throttling VMOD" + DESCRIPTION + =========== + +@@ -71,16 +71,17 @@ Arguments: + - key: A unique identifier to define what is being throttled - more examples below + - limit: How many requests in the specified period + - period: The time period +- - block: a period to deny all access after meeting the threshold ++ - block: a period to deny all access after hitting the threshold. Default is 0s + + Description + Can be used to rate limit the traffic for a specific key to a + maximum of 'limit' requests per 'period' time. If 'block' is > 0s, + (0s by default), then always deny for 'key' for that length of time +- after hitting the threshold. A token bucket is uniquely identified +- by the 4-tuple of its key, limit, period and block, so using the +- same key multiple places with different rules will create multiple +- token buckets. ++ after hitting the threshold. ++ ++ Note: A token bucket is uniquely identified by the 4-tuple of its ++ key, limit, period and block, so using the same key multiple places ++ with different rules will create multiple token buckets. + + Example + :: +@@ -95,14 +96,48 @@ Example + } + + ++$Function VOID return_token(STRING key, INT limit, DURATION period, ++ DURATION block=0) ++ ++Arguments: ++ - Same arguments as is_denied() ++ ++Description ++ Increment (by one) the number of tokens in the specified bucket. is_denied() ++ decrements the bucket by one token and return_token() adds it back. ++ Using these two, you can effectively make a token bucket act like a limit on ++ concurrent requests instead of requests / time. ++ ++ Note: This function doesn't enforce anything, it merely credits a token to ++ appropriate bucket. ++ ++ Warning: If streaming is enabled (beresp.do_stream = true) as it is by ++ default now, vcl_deliver() is called *before* the response is sent ++ to the client (who may download it slowly). Thus you may credit the token ++ back too early if you use return_token() in vcl_backend_response(). ++ ++Example ++ :: ++ ++ sub vcl_recv { ++ if (vsthrottle.is_denied(client.identity, 20, 20s)) { ++ # Client has more than 20 concurrent requests ++ return (synth(429, "Too Many Requests In Flight")); ++ } ++ ++ # ... ++ } ++ ++ sub vcl_deliver { ++ vsthrottle.return_token(client.identity, 10, 10s); ++ } ++ ++ + $Function INT remaining(STRING key, INT limit, DURATION period, + DURATION block=0) + + Arguments: +- - key: A unique identifier to define what is being throttled +- - limit: How many requests in the specified period +- - period: The time period +- - block: duration to block, defaults to 0s ++ - Same arguments as is_denied() + + Description + +@@ -122,10 +157,7 @@ $Function DURATION blocked(STRING key, INT limit, DURATION period, + DURATION block) + + Arguments: +- - key: A unique identifier to define what is being throttled +- - limit: How many requests in the specified period +- - period: The time period +- - block: duration to block ++ - Same arguments as is_denied() + + Description + +diff --git a/src/vmod_xkey.c b/src/vmod_xkey.c +index 3cf8069..ff825fd 100644 +--- a/src/vmod_xkey.c ++++ b/src/vmod_xkey.c +@@ -51,23 +51,23 @@ uintptr_t xkey_cb_handle; + + struct xkey_hashkey { + char digest[DIGEST_LEN]; +- VRB_ENTRY(xkey_hashkey) entry; ++ VRBT_ENTRY(xkey_hashkey) entry; + }; + static int xkey_hashcmp(const struct xkey_hashkey *k1, + const struct xkey_hashkey *k2); +-VRB_HEAD(xkey_hashtree, xkey_hashkey); +-static struct xkey_hashtree xkey_hashtree = VRB_INITIALIZER(&xkey_hashtree); +-VRB_PROTOTYPE(xkey_hashtree, xkey_hashkey, entry, xkey_hashcmp); ++VRBT_HEAD(xkey_hashtree, xkey_hashkey); ++static struct xkey_hashtree xkey_hashtree = VRBT_INITIALIZER(&xkey_hashtree); ++VRBT_PROTOTYPE(xkey_hashtree, xkey_hashkey, entry, xkey_hashcmp); + + struct xkey_ptrkey { + uintptr_t ptr; +- VRB_ENTRY(xkey_ptrkey) entry; ++ VRBT_ENTRY(xkey_ptrkey) entry; + }; + static int xkey_ptrcmp(const struct xkey_ptrkey *k1, + const struct xkey_ptrkey *k2); +-VRB_HEAD(xkey_octree, xkey_ptrkey); +-static struct xkey_octree xkey_octree = VRB_INITIALIZER(&xkey_octree); +-VRB_PROTOTYPE(xkey_octree, xkey_ptrkey, entry, xkey_ptrcmp) ++VRBT_HEAD(xkey_octree, xkey_ptrkey); ++static struct xkey_octree xkey_octree = VRBT_INITIALIZER(&xkey_octree); ++VRBT_PROTOTYPE(xkey_octree, xkey_ptrkey, entry, xkey_ptrcmp) + + struct xkey_hashhead; + struct xkey_ochead; +@@ -114,8 +114,8 @@ static struct { + + /*******************/ + +-VRB_GENERATE(xkey_hashtree, xkey_hashkey, entry, xkey_hashcmp); +-VRB_GENERATE(xkey_octree, xkey_ptrkey, entry, xkey_ptrcmp); ++VRBT_GENERATE(xkey_hashtree, xkey_hashkey, entry, xkey_hashcmp); ++VRBT_GENERATE(xkey_octree, xkey_ptrkey, entry, xkey_ptrcmp); + + static int + xkey_hashcmp(const struct xkey_hashkey *k1, const struct xkey_hashkey *k2) +@@ -246,7 +246,7 @@ xkey_hashtree_lookup(const unsigned char *digest, unsigned len) + AN(digest); + assert(len == sizeof(key.digest)); + memcpy(&key.digest, digest, len); +- pkey = VRB_FIND(xkey_hashtree, &xkey_hashtree, &key); ++ pkey = VRBT_FIND(xkey_hashtree, &xkey_hashtree, &key); + if (pkey != NULL) + CAST_OBJ_NOTNULL(head, (void *)pkey, XKEY_HASHHEAD_MAGIC); + return (head); +@@ -262,7 +262,7 @@ xkey_hashtree_insert(const unsigned char *digest, unsigned len) + head = xkey_hashhead_new(); + assert(len == sizeof(head->key.digest)); + memcpy(&head->key.digest, digest, len); +- key = VRB_INSERT(xkey_hashtree, &xkey_hashtree, &head->key); ++ key = VRBT_INSERT(xkey_hashtree, &xkey_hashtree, &head->key); + if (key != NULL) { + xkey_hashhead_delete(&head); + CAST_OBJ_NOTNULL(head, (void *)key, XKEY_HASHHEAD_MAGIC); +@@ -278,7 +278,7 @@ xkey_octree_lookup(uintptr_t ptr) + + AN(ptr); + key.ptr = ptr; +- pkey = VRB_FIND(xkey_octree, &xkey_octree, &key); ++ pkey = VRBT_FIND(xkey_octree, &xkey_octree, &key); + if (pkey) + CAST_OBJ_NOTNULL(head, (void *)pkey, XKEY_OCHEAD_MAGIC); + return (head); +@@ -293,7 +293,7 @@ xkey_octree_insert(uintptr_t ptr) + AN(ptr); + head = xkey_ochead_new(); + head->key.ptr = ptr; +- key = VRB_INSERT(xkey_octree, &xkey_octree, &head->key); ++ key = VRBT_INSERT(xkey_octree, &xkey_octree, &head->key); + if (key != NULL) { + xkey_ochead_delete(&head); + CAST_OBJ_NOTNULL(head, (void *)key, XKEY_OCHEAD_MAGIC); +@@ -342,7 +342,7 @@ xkey_remove(struct xkey_ochead **pochead) + oc->hashhead = NULL; + VTAILQ_REMOVE(&hashhead->ocs, oc, list_hashhead); + if (VTAILQ_EMPTY(&hashhead->ocs)) { +- VRB_REMOVE(xkey_hashtree, &xkey_hashtree, ++ VRBT_REMOVE(xkey_hashtree, &xkey_hashtree, + &hashhead->key); + xkey_hashhead_delete(&hashhead); + } +@@ -351,7 +351,7 @@ xkey_remove(struct xkey_ochead **pochead) + xkey_oc_delete(&oc); + } + AN(VTAILQ_EMPTY(&ochead->ocs)); +- VRB_REMOVE(xkey_octree, &xkey_octree, &ochead->key); ++ VRBT_REMOVE(xkey_octree, &xkey_octree, &ochead->key); + xkey_ochead_delete(&ochead); + } + +@@ -364,19 +364,19 @@ xkey_cleanup(void) + struct xkey_ochead *ochead; + struct xkey_oc *oc; + +- VRB_FOREACH(hashkey, xkey_hashtree, &xkey_hashtree) { ++ VRBT_FOREACH(hashkey, xkey_hashtree, &xkey_hashtree) { + CAST_OBJ_NOTNULL(hashhead, (void *)hashkey, + XKEY_HASHHEAD_MAGIC); + VTAILQ_CONCAT(&xkey_pool.ocs, &hashhead->ocs, list_ochead); + VTAILQ_INSERT_HEAD(&xkey_pool.hashheads, hashhead, list); + } +- VRB_INIT(&xkey_hashtree); ++ VRBT_INIT(&xkey_hashtree); + +- VRB_FOREACH(ockey, xkey_octree, &xkey_octree) { ++ VRBT_FOREACH(ockey, xkey_octree, &xkey_octree) { + CAST_OBJ_NOTNULL(ochead, (void *)ockey, XKEY_OCHEAD_MAGIC); + VTAILQ_INSERT_HEAD(&xkey_pool.ocheads, ochead, list); + } +- VRB_INIT(&xkey_octree); ++ VRBT_INIT(&xkey_octree); + + while (!VTAILQ_EMPTY(&xkey_pool.hashheads)) { + hashhead = VTAILQ_FIRST(&xkey_pool.hashheads); +@@ -410,11 +410,11 @@ xkey_tok(const char **b, const char **e) + t = *b; + AN(t); + +- while (isblank(*t)) ++ while (*t == ',' || isblank(*t)) + t++; + *b = t; + +- while (*t != '\0' && !isblank(*t)) ++ while (*t != '\0' && *t != ',' && !isblank(*t)) + t++; + *e = t; + return (*b < *e); +diff --git a/src/vmod_xkey.vcc b/src/vmod_xkey.vcc +index 637d4e8..3e6553c 100644 +--- a/src/vmod_xkey.vcc ++++ b/src/vmod_xkey.vcc +@@ -1,4 +1,4 @@ +-$Module xkey 3 Surrogate keys support for Varnish Cache ++$Module xkey 3 "Surrogate keys support for Varnish Cache" + DESCRIPTION + =========== + +@@ -15,8 +15,8 @@ Similarly with an e-commerce site, where various SKUs are often + referenced on a page. + + Hash keys are specified in the ``xkey`` response header. Multiple keys +-can be specified per header line with a space +-separator. Alternatively, they can be specified in multiple ``xkey`` ++can be specified per header line with spaces and/or commas as ++separators. Alternatively, they can be specified in multiple ``xkey`` + response headers. + + Preferably the secondary hash keys are set from the backend +@@ -93,7 +93,7 @@ Varnish will find the objects and clear them out, responding with:: + The objects are now cleared. + + $ABI strict +-$Event vmod_event ++$Event event + $Function INT purge(STRING keys) + + Description +diff --git a/src/vtree.h b/src/vtree.h +deleted file mode 100644 +index b88d9d2..0000000 +--- a/src/vtree.h ++++ /dev/null +@@ -1,770 +0,0 @@ +-/* $NetBSD: tree.h,v 1.8 2004/03/28 19:38:30 provos Exp $ */ +-/* $OpenBSD: tree.h,v 1.7 2002/10/17 21:51:54 art Exp $ */ +-/* $FreeBSD: release/9.0.0/sys/sys/tree.h 189204 2009-03-01 04:57:23Z bms $ */ +- +-/*- +- * Copyright 2002 Niels Provos +- * All rights reserved. +- * +- * 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 ``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 THE AUTHOR 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. +- */ +- +-#ifndef _VTREE_H_ +-#define _VTREE_H_ +- +-#ifndef __unused +-#define __unused __attribute__((__unused__)) +-#endif +- +-/* +- * This file defines data structures for different types of trees: +- * splay trees and red-black trees. +- * +- * A splay tree is a self-organizing data structure. Every operation +- * on the tree causes a splay to happen. The splay moves the requested +- * node to the root of the tree and partly rebalances it. +- * +- * This has the benefit that request locality causes faster lookups as +- * the requested nodes move to the top of the tree. On the other hand, +- * every lookup causes memory writes. +- * +- * The Balance Theorem bounds the total access time for m operations +- * and n inserts on an initially empty tree as O((m + n)lg n). The +- * amortized cost for a sequence of m accesses to a splay tree is O(lg n); +- * +- * A red-black tree is a binary search tree with the node color as an +- * extra attribute. It fulfills a set of conditions: +- * - every search path from the root to a leaf consists of the +- * same number of black nodes, +- * - each red node (except for the root) has a black parent, +- * - each leaf node is black. +- * +- * Every operation on a red-black tree is bounded as O(lg n). +- * The maximum height of a red-black tree is 2lg (n+1). +- */ +- +-#define VSPLAY_HEAD(name, type) \ +-struct name { \ +- struct type *sph_root; /* root of the tree */ \ +-} +- +-#define VSPLAY_INITIALIZER(root) \ +- { NULL } +- +-#define VSPLAY_INIT(root) do { \ +- (root)->sph_root = NULL; \ +-} while (/*CONSTCOND*/ 0) +- +-#define VSPLAY_ENTRY(type) \ +-struct { \ +- struct type *spe_left; /* left element */ \ +- struct type *spe_right; /* right element */ \ +-} +- +-#define VSPLAY_LEFT(elm, field) (elm)->field.spe_left +-#define VSPLAY_RIGHT(elm, field) (elm)->field.spe_right +-#define VSPLAY_ROOT(head) (head)->sph_root +-#define VSPLAY_EMPTY(head) (VSPLAY_ROOT(head) == NULL) +- +-/* VSPLAY_ROTATE_{LEFT,RIGHT} expect that tmp hold VSPLAY_{RIGHT,LEFT} */ +-#define VSPLAY_ROTATE_RIGHT(head, tmp, field) do { \ +- VSPLAY_LEFT((head)->sph_root, field) = VSPLAY_RIGHT(tmp, field);\ +- VSPLAY_RIGHT(tmp, field) = (head)->sph_root; \ +- (head)->sph_root = tmp; \ +-} while (/*CONSTCOND*/ 0) +- +-#define VSPLAY_ROTATE_LEFT(head, tmp, field) do { \ +- VSPLAY_RIGHT((head)->sph_root, field) = VSPLAY_LEFT(tmp, field);\ +- VSPLAY_LEFT(tmp, field) = (head)->sph_root; \ +- (head)->sph_root = tmp; \ +-} while (/*CONSTCOND*/ 0) +- +-#define VSPLAY_LINKLEFT(head, tmp, field) do { \ +- VSPLAY_LEFT(tmp, field) = (head)->sph_root; \ +- tmp = (head)->sph_root; \ +- (head)->sph_root = VSPLAY_LEFT((head)->sph_root, field); \ +-} while (/*CONSTCOND*/ 0) +- +-#define VSPLAY_LINKRIGHT(head, tmp, field) do { \ +- VSPLAY_RIGHT(tmp, field) = (head)->sph_root; \ +- tmp = (head)->sph_root; \ +- (head)->sph_root = VSPLAY_RIGHT((head)->sph_root, field); \ +-} while (/*CONSTCOND*/ 0) +- +-#define VSPLAY_ASSEMBLE(head, node, left, right, field) do { \ +- VSPLAY_RIGHT(left, field) = VSPLAY_LEFT((head)->sph_root, field);\ +- VSPLAY_LEFT(right, field) = VSPLAY_RIGHT((head)->sph_root, field);\ +- VSPLAY_LEFT((head)->sph_root, field) = VSPLAY_RIGHT(node, field);\ +- VSPLAY_RIGHT((head)->sph_root, field) = VSPLAY_LEFT(node, field);\ +-} while (/*CONSTCOND*/ 0) +- +-/* Generates prototypes and inline functions */ +- +-#define VSPLAY_PROTOTYPE(name, type, field, cmp) \ +-void name##_VSPLAY(struct name *, struct type *); \ +-void name##_VSPLAY_MINMAX(struct name *, int); \ +-struct type *name##_VSPLAY_INSERT(struct name *, struct type *); \ +-struct type *name##_VSPLAY_REMOVE(struct name *, struct type *); \ +- \ +-/* Finds the node with the same key as elm */ \ +-static __inline struct type * \ +-name##_VSPLAY_FIND(struct name *head, struct type *elm) \ +-{ \ +- if (VSPLAY_EMPTY(head)) \ +- return(NULL); \ +- name##_VSPLAY(head, elm); \ +- if ((cmp)(elm, (head)->sph_root) == 0) \ +- return (head->sph_root); \ +- return (NULL); \ +-} \ +- \ +-static __inline struct type * \ +-name##_VSPLAY_NEXT(struct name *head, struct type *elm) \ +-{ \ +- name##_VSPLAY(head, elm); \ +- if (VSPLAY_RIGHT(elm, field) != NULL) { \ +- elm = VSPLAY_RIGHT(elm, field); \ +- while (VSPLAY_LEFT(elm, field) != NULL) { \ +- elm = VSPLAY_LEFT(elm, field); \ +- } \ +- } else \ +- elm = NULL; \ +- return (elm); \ +-} \ +- \ +-static __inline struct type * \ +-name##_VSPLAY_MIN_MAX(struct name *head, int val) \ +-{ \ +- name##_VSPLAY_MINMAX(head, val); \ +- return (VSPLAY_ROOT(head)); \ +-} +- +-/* Main splay operation. +- * Moves node close to the key of elm to top +- */ +-#define VSPLAY_GENERATE(name, type, field, cmp) \ +-struct type * \ +-name##_VSPLAY_INSERT(struct name *head, struct type *elm) \ +-{ \ +- if (VSPLAY_EMPTY(head)) { \ +- VSPLAY_LEFT(elm, field) = VSPLAY_RIGHT(elm, field) = NULL; \ +- } else { \ +- int __comp; \ +- name##_VSPLAY(head, elm); \ +- __comp = (cmp)(elm, (head)->sph_root); \ +- if(__comp < 0) { \ +- VSPLAY_LEFT(elm, field) = VSPLAY_LEFT((head)->sph_root, field);\ +- VSPLAY_RIGHT(elm, field) = (head)->sph_root; \ +- VSPLAY_LEFT((head)->sph_root, field) = NULL; \ +- } else if (__comp > 0) { \ +- VSPLAY_RIGHT(elm, field) = VSPLAY_RIGHT((head)->sph_root, field);\ +- VSPLAY_LEFT(elm, field) = (head)->sph_root; \ +- VSPLAY_RIGHT((head)->sph_root, field) = NULL; \ +- } else \ +- return ((head)->sph_root); \ +- } \ +- (head)->sph_root = (elm); \ +- return (NULL); \ +-} \ +- \ +-struct type * \ +-name##_VSPLAY_REMOVE(struct name *head, struct type *elm) \ +-{ \ +- struct type *__tmp; \ +- if (VSPLAY_EMPTY(head)) \ +- return (NULL); \ +- name##_VSPLAY(head, elm); \ +- if ((cmp)(elm, (head)->sph_root) == 0) { \ +- if (VSPLAY_LEFT((head)->sph_root, field) == NULL) { \ +- (head)->sph_root = VSPLAY_RIGHT((head)->sph_root, field);\ +- } else { \ +- __tmp = VSPLAY_RIGHT((head)->sph_root, field); \ +- (head)->sph_root = VSPLAY_LEFT((head)->sph_root, field);\ +- name##_VSPLAY(head, elm); \ +- VSPLAY_RIGHT((head)->sph_root, field) = __tmp; \ +- } \ +- return (elm); \ +- } \ +- return (NULL); \ +-} \ +- \ +-void \ +-name##_VSPLAY(struct name *head, struct type *elm) \ +-{ \ +- struct type __node, *__left, *__right, *__tmp; \ +- int __comp; \ +-\ +- VSPLAY_LEFT(&__node, field) = VSPLAY_RIGHT(&__node, field) = NULL;\ +- __left = __right = &__node; \ +-\ +- while ((__comp = (cmp)(elm, (head)->sph_root)) != 0) { \ +- if (__comp < 0) { \ +- __tmp = VSPLAY_LEFT((head)->sph_root, field); \ +- if (__tmp == NULL) \ +- break; \ +- if ((cmp)(elm, __tmp) < 0){ \ +- VSPLAY_ROTATE_RIGHT(head, __tmp, field);\ +- if (VSPLAY_LEFT((head)->sph_root, field) == NULL)\ +- break; \ +- } \ +- VSPLAY_LINKLEFT(head, __right, field); \ +- } else if (__comp > 0) { \ +- __tmp = VSPLAY_RIGHT((head)->sph_root, field); \ +- if (__tmp == NULL) \ +- break; \ +- if ((cmp)(elm, __tmp) > 0){ \ +- VSPLAY_ROTATE_LEFT(head, __tmp, field); \ +- if (VSPLAY_RIGHT((head)->sph_root, field) == NULL)\ +- break; \ +- } \ +- VSPLAY_LINKRIGHT(head, __left, field); \ +- } \ +- } \ +- VSPLAY_ASSEMBLE(head, &__node, __left, __right, field); \ +-} \ +- \ +-/* Splay with either the minimum or the maximum element \ +- * Used to find minimum or maximum element in tree. \ +- */ \ +-void name##_VSPLAY_MINMAX(struct name *head, int __comp) \ +-{ \ +- struct type __node, *__left, *__right, *__tmp; \ +-\ +- VSPLAY_LEFT(&__node, field) = VSPLAY_RIGHT(&__node, field) = NULL;\ +- __left = __right = &__node; \ +-\ +- while (1) { \ +- if (__comp < 0) { \ +- __tmp = VSPLAY_LEFT((head)->sph_root, field); \ +- if (__tmp == NULL) \ +- break; \ +- if (__comp < 0){ \ +- VSPLAY_ROTATE_RIGHT(head, __tmp, field);\ +- if (VSPLAY_LEFT((head)->sph_root, field) == NULL)\ +- break; \ +- } \ +- VSPLAY_LINKLEFT(head, __right, field); \ +- } else if (__comp > 0) { \ +- __tmp = VSPLAY_RIGHT((head)->sph_root, field); \ +- if (__tmp == NULL) \ +- break; \ +- if (__comp > 0) { \ +- VSPLAY_ROTATE_LEFT(head, __tmp, field); \ +- if (VSPLAY_RIGHT((head)->sph_root, field) == NULL)\ +- break; \ +- } \ +- VSPLAY_LINKRIGHT(head, __left, field); \ +- } \ +- } \ +- VSPLAY_ASSEMBLE(head, &__node, __left, __right, field); \ +-} +- +-#define VSPLAY_NEGINF -1 +-#define VSPLAY_INF 1 +- +-#define VSPLAY_INSERT(name, x, y) name##_VSPLAY_INSERT(x, y) +-#define VSPLAY_REMOVE(name, x, y) name##_VSPLAY_REMOVE(x, y) +-#define VSPLAY_FIND(name, x, y) name##_VSPLAY_FIND(x, y) +-#define VSPLAY_NEXT(name, x, y) name##_VSPLAY_NEXT(x, y) +-#define VSPLAY_MIN(name, x) (VSPLAY_EMPTY(x) ? NULL \ +- : name##_VSPLAY_MIN_MAX(x, VSPLAY_NEGINF)) +-#define VSPLAY_MAX(name, x) (VSPLAY_EMPTY(x) ? NULL \ +- : name##_VSPLAY_MIN_MAX(x, VSPLAY_INF)) +- +-#define VSPLAY_FOREACH(x, name, head) \ +- for ((x) = VSPLAY_MIN(name, head); \ +- (x) != NULL; \ +- (x) = VSPLAY_NEXT(name, head, x)) +- +-/* Macros that define a red-black tree */ +-#define VRB_HEAD(name, type) \ +-struct name { \ +- struct type *rbh_root; /* root of the tree */ \ +-} +- +-#define VRB_INITIALIZER(root) \ +- { NULL } +- +-#define VRB_INIT(root) do { \ +- (root)->rbh_root = NULL; \ +-} while (/*CONSTCOND*/ 0) +- +-#define VRB_BLACK 0 +-#define VRB_RED 1 +-#define VRB_ENTRY(type) \ +-struct { \ +- struct type *rbe_left; /* left element */ \ +- struct type *rbe_right; /* right element */ \ +- struct type *rbe_parent; /* parent element */ \ +- int rbe_color; /* node color */ \ +-} +- +-#define VRB_LEFT(elm, field) (elm)->field.rbe_left +-#define VRB_RIGHT(elm, field) (elm)->field.rbe_right +-#define VRB_PARENT(elm, field) (elm)->field.rbe_parent +-#define VRB_COLOR(elm, field) (elm)->field.rbe_color +-#define VRB_ROOT(head) (head)->rbh_root +-#define VRB_EMPTY(head) (VRB_ROOT(head) == NULL) +- +-#define VRB_SET(elm, parent, field) do { \ +- VRB_PARENT(elm, field) = parent; \ +- VRB_LEFT(elm, field) = VRB_RIGHT(elm, field) = NULL; \ +- VRB_COLOR(elm, field) = VRB_RED; \ +-} while (/*CONSTCOND*/ 0) +- +-#define VRB_SET_BLACKRED(black, red, field) do { \ +- VRB_COLOR(black, field) = VRB_BLACK; \ +- VRB_COLOR(red, field) = VRB_RED; \ +-} while (/*CONSTCOND*/ 0) +- +-#ifndef VRB_AUGMENT +-#define VRB_AUGMENT(x) do {} while (0) +-#endif +- +-#define VRB_ROTATE_LEFT(head, elm, tmp, field) do { \ +- (tmp) = VRB_RIGHT(elm, field); \ +- if ((VRB_RIGHT(elm, field) = VRB_LEFT(tmp, field)) != NULL) { \ +- VRB_PARENT(VRB_LEFT(tmp, field), field) = (elm); \ +- } \ +- VRB_AUGMENT(elm); \ +- if ((VRB_PARENT(tmp, field) = VRB_PARENT(elm, field)) != NULL) {\ +- if ((elm) == VRB_LEFT(VRB_PARENT(elm, field), field)) \ +- VRB_LEFT(VRB_PARENT(elm, field), field) = (tmp);\ +- else \ +- VRB_RIGHT(VRB_PARENT(elm, field), field) = (tmp);\ +- } else \ +- (head)->rbh_root = (tmp); \ +- VRB_LEFT(tmp, field) = (elm); \ +- VRB_PARENT(elm, field) = (tmp); \ +- VRB_AUGMENT(tmp); \ +- if ((VRB_PARENT(tmp, field))) \ +- VRB_AUGMENT(VRB_PARENT(tmp, field)); \ +-} while (/*CONSTCOND*/ 0) +- +-#define VRB_ROTATE_RIGHT(head, elm, tmp, field) do { \ +- (tmp) = VRB_LEFT(elm, field); \ +- if ((VRB_LEFT(elm, field) = VRB_RIGHT(tmp, field)) != NULL) { \ +- VRB_PARENT(VRB_RIGHT(tmp, field), field) = (elm); \ +- } \ +- VRB_AUGMENT(elm); \ +- if ((VRB_PARENT(tmp, field) = VRB_PARENT(elm, field)) != NULL) {\ +- if ((elm) == VRB_LEFT(VRB_PARENT(elm, field), field)) \ +- VRB_LEFT(VRB_PARENT(elm, field), field) = (tmp);\ +- else \ +- VRB_RIGHT(VRB_PARENT(elm, field), field) = (tmp);\ +- } else \ +- (head)->rbh_root = (tmp); \ +- VRB_RIGHT(tmp, field) = (elm); \ +- VRB_PARENT(elm, field) = (tmp); \ +- VRB_AUGMENT(tmp); \ +- if ((VRB_PARENT(tmp, field))) \ +- VRB_AUGMENT(VRB_PARENT(tmp, field)); \ +-} while (/*CONSTCOND*/ 0) +- +-/* Generates prototypes and inline functions */ +-#define VRB_PROTOTYPE(name, type, field, cmp) \ +- VRB_PROTOTYPE_INTERNAL(name, type, field, cmp,) +-#define VRB_PROTOTYPE_STATIC(name, type, field, cmp) \ +- VRB_PROTOTYPE_INTERNAL(name, type, field, cmp, __unused static) +-#define VRB_PROTOTYPE_INTERNAL(name, type, field, cmp, attr) \ +-/*lint -esym(528, name##_VRB_*) */ \ +-attr void name##_VRB_INSERT_COLOR(struct name *, struct type *); \ +-attr void name##_VRB_REMOVE_COLOR(struct name *, struct type *, struct type *);\ +-attr struct type *name##_VRB_REMOVE(struct name *, struct type *); \ +-attr struct type *name##_VRB_INSERT(struct name *, struct type *); \ +-attr struct type *name##_VRB_FIND(const struct name *, const struct type *); \ +-attr struct type *name##_VRB_NFIND(const struct name *, const struct type *); \ +-attr struct type *name##_VRB_NEXT(struct type *); \ +-attr struct type *name##_VRB_PREV(struct type *); \ +-attr struct type *name##_VRB_MINMAX(const struct name *, int); \ +- \ +- +-/* Main rb operation. +- * Moves node close to the key of elm to top +- */ +-#define VRB_GENERATE(name, type, field, cmp) \ +- VRB_GENERATE_INTERNAL(name, type, field, cmp,) +-#define VRB_GENERATE_STATIC(name, type, field, cmp) \ +- VRB_GENERATE_INTERNAL(name, type, field, cmp, __unused static) +-#define VRB_GENERATE_INTERNAL(name, type, field, cmp, attr) \ +-attr void \ +-name##_VRB_INSERT_COLOR(struct name *head, struct type *elm) \ +-{ \ +- struct type *parent, *gparent, *tmp; \ +- while ((parent = VRB_PARENT(elm, field)) != NULL && \ +- VRB_COLOR(parent, field) == VRB_RED) { \ +- gparent = VRB_PARENT(parent, field); \ +- if (parent == VRB_LEFT(gparent, field)) { \ +- tmp = VRB_RIGHT(gparent, field); \ +- if (tmp && VRB_COLOR(tmp, field) == VRB_RED) { \ +- VRB_COLOR(tmp, field) = VRB_BLACK; \ +- VRB_SET_BLACKRED(parent, gparent, field);\ +- elm = gparent; \ +- continue; \ +- } \ +- if (VRB_RIGHT(parent, field) == elm) { \ +- VRB_ROTATE_LEFT(head, parent, tmp, field);\ +- tmp = parent; \ +- parent = elm; \ +- elm = tmp; \ +- } \ +- VRB_SET_BLACKRED(parent, gparent, field); \ +- VRB_ROTATE_RIGHT(head, gparent, tmp, field); \ +- } else { \ +- tmp = VRB_LEFT(gparent, field); \ +- if (tmp && VRB_COLOR(tmp, field) == VRB_RED) { \ +- VRB_COLOR(tmp, field) = VRB_BLACK; \ +- VRB_SET_BLACKRED(parent, gparent, field);\ +- elm = gparent; \ +- continue; \ +- } \ +- if (VRB_LEFT(parent, field) == elm) { \ +- VRB_ROTATE_RIGHT(head, parent, tmp, field);\ +- tmp = parent; \ +- parent = elm; \ +- elm = tmp; \ +- } \ +- VRB_SET_BLACKRED(parent, gparent, field); \ +- VRB_ROTATE_LEFT(head, gparent, tmp, field); \ +- } \ +- } \ +- VRB_COLOR(head->rbh_root, field) = VRB_BLACK; \ +-} \ +- \ +-attr void \ +-name##_VRB_REMOVE_COLOR(struct name *head, struct type *parent, struct type *elm) \ +-{ \ +- struct type *tmp; \ +- while ((elm == NULL || VRB_COLOR(elm, field) == VRB_BLACK) && \ +- elm != VRB_ROOT(head)) { \ +- AN(parent); \ +- if (VRB_LEFT(parent, field) == elm) { \ +- tmp = VRB_RIGHT(parent, field); \ +- if (VRB_COLOR(tmp, field) == VRB_RED) { \ +- VRB_SET_BLACKRED(tmp, parent, field); \ +- VRB_ROTATE_LEFT(head, parent, tmp, field);\ +- tmp = VRB_RIGHT(parent, field); \ +- } \ +- if ((VRB_LEFT(tmp, field) == NULL || \ +- VRB_COLOR(VRB_LEFT(tmp, field), field) == VRB_BLACK) &&\ +- (VRB_RIGHT(tmp, field) == NULL || \ +- VRB_COLOR(VRB_RIGHT(tmp, field), field) == VRB_BLACK)) {\ +- VRB_COLOR(tmp, field) = VRB_RED; \ +- elm = parent; \ +- parent = VRB_PARENT(elm, field); \ +- } else { \ +- if (VRB_RIGHT(tmp, field) == NULL || \ +- VRB_COLOR(VRB_RIGHT(tmp, field), field) == VRB_BLACK) {\ +- struct type *oleft; \ +- if ((oleft = VRB_LEFT(tmp, field)) \ +- != NULL) \ +- VRB_COLOR(oleft, field) = VRB_BLACK;\ +- VRB_COLOR(tmp, field) = VRB_RED;\ +- VRB_ROTATE_RIGHT(head, tmp, oleft, field);\ +- tmp = VRB_RIGHT(parent, field); \ +- } \ +- VRB_COLOR(tmp, field) = VRB_COLOR(parent, field);\ +- VRB_COLOR(parent, field) = VRB_BLACK; \ +- if (VRB_RIGHT(tmp, field)) \ +- VRB_COLOR(VRB_RIGHT(tmp, field), field) = VRB_BLACK;\ +- VRB_ROTATE_LEFT(head, parent, tmp, field);\ +- elm = VRB_ROOT(head); \ +- break; \ +- } \ +- } else { \ +- tmp = VRB_LEFT(parent, field); \ +- if (VRB_COLOR(tmp, field) == VRB_RED) { \ +- VRB_SET_BLACKRED(tmp, parent, field); \ +- VRB_ROTATE_RIGHT(head, parent, tmp, field);\ +- tmp = VRB_LEFT(parent, field); \ +- } \ +- if ((VRB_LEFT(tmp, field) == NULL || \ +- VRB_COLOR(VRB_LEFT(tmp, field), field) == VRB_BLACK) &&\ +- (VRB_RIGHT(tmp, field) == NULL || \ +- VRB_COLOR(VRB_RIGHT(tmp, field), field) == VRB_BLACK)) {\ +- VRB_COLOR(tmp, field) = VRB_RED; \ +- elm = parent; \ +- parent = VRB_PARENT(elm, field); \ +- } else { \ +- if (VRB_LEFT(tmp, field) == NULL || \ +- VRB_COLOR(VRB_LEFT(tmp, field), field) == VRB_BLACK) {\ +- struct type *oright; \ +- if ((oright = VRB_RIGHT(tmp, field)) \ +- != NULL) \ +- VRB_COLOR(oright, field) = VRB_BLACK;\ +- VRB_COLOR(tmp, field) = VRB_RED;\ +- VRB_ROTATE_LEFT(head, tmp, oright, field);\ +- tmp = VRB_LEFT(parent, field); \ +- } \ +- VRB_COLOR(tmp, field) = VRB_COLOR(parent, field);\ +- VRB_COLOR(parent, field) = VRB_BLACK; \ +- if (VRB_LEFT(tmp, field)) \ +- VRB_COLOR(VRB_LEFT(tmp, field), field) = VRB_BLACK;\ +- VRB_ROTATE_RIGHT(head, parent, tmp, field);\ +- elm = VRB_ROOT(head); \ +- break; \ +- } \ +- } \ +- } \ +- if (elm) \ +- VRB_COLOR(elm, field) = VRB_BLACK; \ +-} \ +- \ +-attr struct type * \ +-name##_VRB_REMOVE(struct name *head, struct type *elm) \ +-{ \ +- struct type *child, *parent, *old = elm; \ +- int color; \ +- if (VRB_LEFT(elm, field) == NULL) \ +- child = VRB_RIGHT(elm, field); \ +- else if (VRB_RIGHT(elm, field) == NULL) \ +- child = VRB_LEFT(elm, field); \ +- else { \ +- struct type *left; \ +- elm = VRB_RIGHT(elm, field); \ +- while ((left = VRB_LEFT(elm, field)) != NULL) \ +- elm = left; \ +- child = VRB_RIGHT(elm, field); \ +- parent = VRB_PARENT(elm, field); \ +- color = VRB_COLOR(elm, field); \ +- if (child) \ +- VRB_PARENT(child, field) = parent; \ +- if (parent) { \ +- if (VRB_LEFT(parent, field) == elm) \ +- VRB_LEFT(parent, field) = child; \ +- else \ +- VRB_RIGHT(parent, field) = child; \ +- VRB_AUGMENT(parent); \ +- } else \ +- VRB_ROOT(head) = child; \ +- if (VRB_PARENT(elm, field) == old) \ +- parent = elm; \ +- (elm)->field = (old)->field; \ +- if (VRB_PARENT(old, field)) { \ +- if (VRB_LEFT(VRB_PARENT(old, field), field) == old)\ +- VRB_LEFT(VRB_PARENT(old, field), field) = elm;\ +- else \ +- VRB_RIGHT(VRB_PARENT(old, field), field) = elm;\ +- VRB_AUGMENT(VRB_PARENT(old, field)); \ +- } else \ +- VRB_ROOT(head) = elm; \ +- VRB_PARENT(VRB_LEFT(old, field), field) = elm; \ +- if (VRB_RIGHT(old, field)) \ +- VRB_PARENT(VRB_RIGHT(old, field), field) = elm; \ +- if (parent) { \ +- left = parent; \ +- do { \ +- VRB_AUGMENT(left); \ +- } while ((left = VRB_PARENT(left, field)) != NULL); \ +- } \ +- goto color; \ +- } \ +- parent = VRB_PARENT(elm, field); \ +- color = VRB_COLOR(elm, field); \ +- if (child) \ +- VRB_PARENT(child, field) = parent; \ +- if (parent) { \ +- if (VRB_LEFT(parent, field) == elm) \ +- VRB_LEFT(parent, field) = child; \ +- else \ +- VRB_RIGHT(parent, field) = child; \ +- VRB_AUGMENT(parent); \ +- } else \ +- VRB_ROOT(head) = child; \ +-color: \ +- if (color == VRB_BLACK) { \ +- name##_VRB_REMOVE_COLOR(head, parent, child); \ +- } \ +- return (old); \ +-} \ +- \ +-/* Inserts a node into the RB tree */ \ +-attr struct type * \ +-name##_VRB_INSERT(struct name *head, struct type *elm) \ +-{ \ +- struct type *tmp; \ +- struct type *parent = NULL; \ +- int comp = 0; \ +- tmp = VRB_ROOT(head); \ +- while (tmp) { \ +- parent = tmp; \ +- comp = (cmp)(elm, parent); \ +- if (comp < 0) \ +- tmp = VRB_LEFT(tmp, field); \ +- else if (comp > 0) \ +- tmp = VRB_RIGHT(tmp, field); \ +- else \ +- return (tmp); \ +- } \ +- VRB_SET(elm, parent, field); \ +- if (parent != NULL) { \ +- if (comp < 0) \ +- VRB_LEFT(parent, field) = elm; \ +- else \ +- VRB_RIGHT(parent, field) = elm; \ +- VRB_AUGMENT(parent); \ +- } else \ +- VRB_ROOT(head) = elm; \ +- name##_VRB_INSERT_COLOR(head, elm); \ +- return (NULL); \ +-} \ +- \ +-/* Finds the node with the same key as elm */ \ +-attr struct type * \ +-name##_VRB_FIND(const struct name *head, const struct type *elm) \ +-{ \ +- struct type *tmp = VRB_ROOT(head); \ +- int comp; \ +- while (tmp) { \ +- comp = cmp(elm, tmp); \ +- if (comp < 0) \ +- tmp = VRB_LEFT(tmp, field); \ +- else if (comp > 0) \ +- tmp = VRB_RIGHT(tmp, field); \ +- else \ +- return (tmp); \ +- } \ +- return (NULL); \ +-} \ +- \ +-/* Finds the first node greater than or equal to the search key */ \ +-attr struct type * \ +-name##_VRB_NFIND(const struct name *head, const struct type *elm) \ +-{ \ +- struct type *tmp = VRB_ROOT(head); \ +- struct type *res = NULL; \ +- int comp; \ +- while (tmp) { \ +- comp = cmp(elm, tmp); \ +- if (comp < 0) { \ +- res = tmp; \ +- tmp = VRB_LEFT(tmp, field); \ +- } \ +- else if (comp > 0) \ +- tmp = VRB_RIGHT(tmp, field); \ +- else \ +- return (tmp); \ +- } \ +- return (res); \ +-} \ +- \ +-/* ARGSUSED */ \ +-attr struct type * \ +-name##_VRB_NEXT(struct type *elm) \ +-{ \ +- if (VRB_RIGHT(elm, field)) { \ +- elm = VRB_RIGHT(elm, field); \ +- while (VRB_LEFT(elm, field)) \ +- elm = VRB_LEFT(elm, field); \ +- } else { \ +- if (VRB_PARENT(elm, field) && \ +- (elm == VRB_LEFT(VRB_PARENT(elm, field), field))) \ +- elm = VRB_PARENT(elm, field); \ +- else { \ +- while (VRB_PARENT(elm, field) && \ +- (elm == VRB_RIGHT(VRB_PARENT(elm, field), field)))\ +- elm = VRB_PARENT(elm, field); \ +- elm = VRB_PARENT(elm, field); \ +- } \ +- } \ +- return (elm); \ +-} \ +- \ +-/* ARGSUSED */ \ +-attr struct type * \ +-name##_VRB_PREV(struct type *elm) \ +-{ \ +- if (VRB_LEFT(elm, field)) { \ +- elm = VRB_LEFT(elm, field); \ +- while (VRB_RIGHT(elm, field)) \ +- elm = VRB_RIGHT(elm, field); \ +- } else { \ +- if (VRB_PARENT(elm, field) && \ +- (elm == VRB_RIGHT(VRB_PARENT(elm, field), field))) \ +- elm = VRB_PARENT(elm, field); \ +- else { \ +- while (VRB_PARENT(elm, field) && \ +- (elm == VRB_LEFT(VRB_PARENT(elm, field), field)))\ +- elm = VRB_PARENT(elm, field); \ +- elm = VRB_PARENT(elm, field); \ +- } \ +- } \ +- return (elm); \ +-} \ +- \ +-attr struct type * \ +-name##_VRB_MINMAX(const struct name *head, int val) \ +-{ \ +- struct type *tmp = VRB_ROOT(head); \ +- struct type *parent = NULL; \ +- while (tmp) { \ +- parent = tmp; \ +- if (val < 0) \ +- tmp = VRB_LEFT(tmp, field); \ +- else \ +- tmp = VRB_RIGHT(tmp, field); \ +- } \ +- return (parent); \ +-} +- +-#define VRB_NEGINF -1 +-#define VRB_INF 1 +- +-#define VRB_INSERT(name, x, y) name##_VRB_INSERT(x, y) +-#define VRB_REMOVE(name, x, y) name##_VRB_REMOVE(x, y) +-#define VRB_FIND(name, x, y) name##_VRB_FIND(x, y) +-#define VRB_NFIND(name, x, y) name##_VRB_NFIND(x, y) +-#define VRB_NEXT(name, x, y) name##_VRB_NEXT(y) +-#define VRB_PREV(name, x, y) name##_VRB_PREV(y) +-#define VRB_MIN(name, x) name##_VRB_MINMAX(x, VRB_NEGINF) +-#define VRB_MAX(name, x) name##_VRB_MINMAX(x, VRB_INF) +- +-#define VRB_FOREACH(x, name, head) \ +- for ((x) = VRB_MIN(name, head); \ +- (x) != NULL; \ +- (x) = name##_VRB_NEXT(x)) +- +-#define VRB_FOREACH_FROM(x, name, y) \ +- for ((x) = (y); \ +- ((x) != NULL) && ((y) = name##_VRB_NEXT(x), (x) != NULL); \ +- (x) = (y)) +- +-#define VRB_FOREACH_SAFE(x, name, head, y) \ +- for ((x) = VRB_MIN(name, head); \ +- ((x) != NULL) && ((y) = name##_VRB_NEXT(x), (x) != NULL); \ +- (x) = (y)) +- +-#define VRB_FOREACH_REVERSE(x, name, head) \ +- for ((x) = VRB_MAX(name, head); \ +- (x) != NULL; \ +- (x) = name##_VRB_PREV(x)) +- +-#define VRB_FOREACH_REVERSE_FROM(x, name, y) \ +- for ((x) = (y); \ +- ((x) != NULL) && ((y) = name##_VRB_PREV(x), (x) != NULL); \ +- (x) = (y)) +- +-#define VRB_FOREACH_REVERSE_SAFE(x, name, head, y) \ +- for ((x) = VRB_MAX(name, head); \ +- ((x) != NULL) && ((y) = name##_VRB_PREV(x), (x) != NULL); \ +- (x) = (y)) +- +-#endif /* _VTREE_H_ */ diff --git a/varnish-modules.spec b/varnish-modules.spec index 37f49cd..e5a46d7 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -3,19 +3,27 @@ Name: varnish-modules Version: 0.15.0 -Release: 6%{?dist} +Release: 7%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL License: BSD URL: https://github.com/varnish/%{name} Source: https://download.varnish-software.com/varnish-modules/%{name}-%{version}.tar.gz -Patch10: varnish-modules-0.15.0_fix_saintmode_for_varnish_6.1.patch -Patch11: varnish-modules-0.15.0_fix_simple_formatting_bug.patch + +Patch99: varnish-modules-0.15.0.add.bootstrap.patch +# bz #1736943: Fetched forward compatibiliy patch from +# https://github.com/nigoroll/varnish-modules, checkout fe1a981 +Patch100: varnish-modules-0.15.0.nigoroll_to_fe1a981_compatible_with_varnish-6.3.0.patch + BuildRequires: gcc BuildRequires: make BuildRequires: pkgconfig(varnishapi) BuildRequires: varnish +BuildRequires: automake +BuildRequires: autoconf +BuildRequires: libtool + Requires: varnish Provides: vmod-bodyaccess = %{version}-%{release} @@ -38,12 +46,12 @@ tcp, var, xkey %prep %setup -q -%if "%varnishver" >= "6.1" -%patch10 -p1 -%endif -%patch11 -p1 +%patch99 -p0 +%patch100 -p1 + %build +sh bootstrap %configure %make_build @@ -65,6 +73,10 @@ rm %{buildroot}%{_pkgdocdir}/LICENSE # Rather use license macro %{_mandir}/man3/*.3* %changelog +* Sun Sep 29 2019 Ingvar Hagelund - 0.15.0-7 +- Added patch from Nils Goroll, compatibility for varnish-6.3, closes bz#1736943 +- Rebuilt against varnish-6.3.0 + * Sat Jul 27 2019 Fedora Release Engineering - 0.15.0-6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild From 2337e6365c76e60b62b3e9c4c571fd0ed2f026ae Mon Sep 17 00:00:00 2001 From: Ingvar Hagelund Date: Sun, 29 Sep 2019 00:50:16 +0200 Subject: [PATCH 04/53] Memo to self: fedpkg commit does not include new patches --- varnish-0.15.0.add.bootstrap.patch | 44 ++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 varnish-0.15.0.add.bootstrap.patch diff --git a/varnish-0.15.0.add.bootstrap.patch b/varnish-0.15.0.add.bootstrap.patch new file mode 100644 index 0000000..ad233c7 --- /dev/null +++ b/varnish-0.15.0.add.bootstrap.patch @@ -0,0 +1,44 @@ +--- /dev/null 2019-09-18 14:09:23.308277474 +0200 ++++ bootstrap 2019-09-24 09:55:24.218322744 +0200 +@@ -0,0 +1,41 @@ ++#!/bin/sh ++ ++warn() { ++ echo "WARNING: $@" 1>&2 ++} ++ ++case `uname -s` in ++Darwin) ++ LIBTOOLIZE=glibtoolize ++ ;; ++FreeBSD) ++ LIBTOOLIZE=libtoolize ++ ;; ++Linux) ++ LIBTOOLIZE=libtoolize ++ ;; ++SunOS) ++ LIBTOOLIZE=libtoolize ++ ;; ++*) ++ warn "unrecognized platform:" `uname -s` ++ LIBTOOLIZE=libtoolize ++esac ++ ++# check for varnishapi.m4 in custom paths ++dataroot=$(pkg-config --variable=datarootdir varnishapi 2>/dev/null) ++if [ -z "$dataroot" ] ; then ++ cat >&2 <<'EOF' ++Package varnishapi was not found in the pkg-config search path. ++Perhaps you should add the directory containing `varnishapi.pc' ++to the PKG_CONFIG_PATH environment variable ++EOF ++ exit 1 ++fi ++set -ex ++mkdir -p m4 ++aclocal -I m4 -I ${dataroot}/aclocal ++$LIBTOOLIZE --copy --force ++autoheader ++automake --add-missing --copy --foreign ++autoconf From f13282536a6c2c62b38abc459999a9ff362340fe Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 31 Jan 2020 02:57:06 +0000 Subject: [PATCH 05/53] - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- varnish-modules.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/varnish-modules.spec b/varnish-modules.spec index e5a46d7..0c37d8a 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -3,7 +3,7 @@ Name: varnish-modules Version: 0.15.0 -Release: 7%{?dist} +Release: 8%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL License: BSD @@ -73,6 +73,9 @@ rm %{buildroot}%{_pkgdocdir}/LICENSE # Rather use license macro %{_mandir}/man3/*.3* %changelog +* Fri Jan 31 2020 Fedora Release Engineering - 0.15.0-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + * Sun Sep 29 2019 Ingvar Hagelund - 0.15.0-7 - Added patch from Nils Goroll, compatibility for varnish-6.3, closes bz#1736943 - Rebuilt against varnish-6.3.0 From 7c89415d95cc3edb1a2f8bbb4d66913e33c47184 Mon Sep 17 00:00:00 2001 From: Ingvar Hagelund Date: Fri, 20 Mar 2020 09:06:49 +0100 Subject: [PATCH 06/53] Snapshot from 6.4 branch, rebuilt against varnish-6.4.0 Removed patches merged upstream Delete 64-bit specific test on 32-bit arches --- .gitignore | 1 + sources | 2 +- varnish-modules.spec | 46 ++++++++++++++++++++++++++++---------------- 3 files changed, 31 insertions(+), 18 deletions(-) diff --git a/.gitignore b/.gitignore index 47e6daa..aec2562 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ /varnish-modules-0.12.1.tar.gz /varnish-modules-0.15.0.tar.gz +/varnish-modules-0032ed8.tar.gz diff --git a/sources b/sources index 220d464..b4e3785 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (varnish-modules-0.15.0.tar.gz) = f24bc7e00db8eb53e4730b9b6d9adb9442d26ad5b07f3e09541b686e41d437113b8bca75f9ac47bc0ec54475fafb0eefc46b98ccee92d9360aaf660b4826ec9e +SHA512 (varnish-modules-0032ed8.tar.gz) = 9ad2bc33a954645f267ae61a299fc067cb075959ade0ecc2dbf080867c6b3039835994b628aeea92ecfb0b3bbce9d3fae83945f48b57df32a2e86c030ee1c704 diff --git a/varnish-modules.spec b/varnish-modules.spec index 0c37d8a..83df087 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -1,33 +1,38 @@ %global varnishver %(pkg-config --silence-errors --modversion varnishapi || echo 0) +%global commit 0032ed81820cbc7d8d0bdda8f0a14dc968a9de4f +%global shortcommit %(c=%{commit}; echo ${c:0:7}) + +%if 0%{?rhel} == 7 || 0%{?rhel} == 6 +%global docutils python34-docutils +%else +%global docutils python3-docutils +%endif Name: varnish-modules -Version: 0.15.0 -Release: 8%{?dist} +Version: 0.16.0 +Release: 0.1.20200318git%{shortcommit}%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL License: BSD URL: https://github.com/varnish/%{name} -Source: https://download.varnish-software.com/varnish-modules/%{name}-%{version}.tar.gz - -Patch99: varnish-modules-0.15.0.add.bootstrap.patch -# bz #1736943: Fetched forward compatibiliy patch from -# https://github.com/nigoroll/varnish-modules, checkout fe1a981 -Patch100: varnish-modules-0.15.0.nigoroll_to_fe1a981_compatible_with_varnish-6.3.0.patch +Source: https://github.com/varnish/%{name}/archive/%{commit}/%{name}-%{shortcommit}.tar.gz +#Source: https://download.varnish-software.com/varnish-modules/%{name}-%{version}.tar.gz BuildRequires: gcc BuildRequires: make BuildRequires: pkgconfig(varnishapi) BuildRequires: varnish +# Build from a git checkout BuildRequires: automake BuildRequires: autoconf BuildRequires: libtool +BuildRequires: %docutils -Requires: varnish +Requires: varnish = %varnishver Provides: vmod-bodyaccess = %{version}-%{release} -Provides: vmod-cookie = %{version}-%{release} Provides: vmod-header = %{version}-%{release} Provides: vmod-saintmode = %{version}-%{release} Provides: vmod-tcp = %{version}-%{release} @@ -40,29 +45,31 @@ Provides: vmod-xkey = %{version}-%{release} This is a collection of modules ("vmods") extending Varnish VCL used for describing HTTP request/response policies with additional capabilities. This collection contains the following vmods (previously -kept individually): cookie, vsthrottle, header, saintmode, softpurge, +kept individually): vsthrottle, header, saintmode, softpurge, tcp, var, xkey %prep -%setup -q -%patch99 -p0 -%patch100 -p1 +%autosetup -n %{name}-%{commit} +#autosetup %build sh bootstrap -%configure -%make_build +%configure +%make_build %install %make_install docdir=%_pkgdocdir find %{buildroot}/%{_libdir}/ -name '*.la' -exec rm -f {} ';' rm %{buildroot}%{_pkgdocdir}/LICENSE # Rather use license macro - %check +%ifarch %ix86 ppc +# 64-bit specific test +sed -i 's,tests/xkey/test12.vtc,,' src/Makefile +%endif %make_build check VERBOSE=1 @@ -73,6 +80,11 @@ rm %{buildroot}%{_pkgdocdir}/LICENSE # Rather use license macro %{_mandir}/man3/*.3* %changelog +* Tue Mar 17 2020 Ingvar Hagelund - 0.15.1-0.1.20200317git21d0c84 +- Snapshot from 6.4 branch, rebuilt against varnish-6.4.0 +- Removed patches merged upstream +- Delete 64-bit specific test on 32-bit arches + * Fri Jan 31 2020 Fedora Release Engineering - 0.15.0-8 - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild From 4f0634a3171ce78ab0d9fc56cc365638f67c356a Mon Sep 17 00:00:00 2001 From: Ingvar Hagelund Date: Mon, 23 Mar 2020 12:41:01 +0100 Subject: [PATCH 07/53] %arm is also 32-bit --- varnish-modules.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/varnish-modules.spec b/varnish-modules.spec index 83df087..141719b 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -66,7 +66,7 @@ find %{buildroot}/%{_libdir}/ -name '*.la' -exec rm -f {} ';' rm %{buildroot}%{_pkgdocdir}/LICENSE # Rather use license macro %check -%ifarch %ix86 ppc +%ifarch %ix86 %arm ppc # 64-bit specific test sed -i 's,tests/xkey/test12.vtc,,' src/Makefile %endif From 9a19a7885e4971e13ccc5b5f551458245260d4c6 Mon Sep 17 00:00:00 2001 From: Ingvar Hagelund Date: Sat, 28 Mar 2020 19:51:59 +0100 Subject: [PATCH 08/53] New upstream release --- .gitignore | 1 + sources | 2 +- varnish-modules.spec | 18 ++++++++---------- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index aec2562..789acef 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ /varnish-modules-0.12.1.tar.gz /varnish-modules-0.15.0.tar.gz /varnish-modules-0032ed8.tar.gz +/varnish-modules-0.16.0.tar.gz diff --git a/sources b/sources index b4e3785..90bd340 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (varnish-modules-0032ed8.tar.gz) = 9ad2bc33a954645f267ae61a299fc067cb075959ade0ecc2dbf080867c6b3039835994b628aeea92ecfb0b3bbce9d3fae83945f48b57df32a2e86c030ee1c704 +SHA512 (varnish-modules-0.16.0.tar.gz) = 614bb99cf48d33710f06ed52bacff092c8a60ddd8f5eb55470cf571e44ca01cc9696b4c8669dc6979ab7096762cb6ef80435e210aa38f9eaaf31a1dd73d858e2 diff --git a/varnish-modules.spec b/varnish-modules.spec index 141719b..1cc69ad 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -1,8 +1,5 @@ %global varnishver %(pkg-config --silence-errors --modversion varnishapi || echo 0) -%global commit 0032ed81820cbc7d8d0bdda8f0a14dc968a9de4f -%global shortcommit %(c=%{commit}; echo ${c:0:7}) - %if 0%{?rhel} == 7 || 0%{?rhel} == 6 %global docutils python34-docutils %else @@ -11,13 +8,13 @@ Name: varnish-modules Version: 0.16.0 -Release: 0.1.20200318git%{shortcommit}%{?dist} +Release: 1%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL License: BSD URL: https://github.com/varnish/%{name} -Source: https://github.com/varnish/%{name}/archive/%{commit}/%{name}-%{shortcommit}.tar.gz -#Source: https://download.varnish-software.com/varnish-modules/%{name}-%{version}.tar.gz +#Source: https://download.varnish-software.com/varnish-modules/#{name}-#{version}.tar.gz +Source: https://github.com/varnish/varnish-modules/releases/download/%{name}-%{version}/%{name}-%{version}.tar.gz BuildRequires: gcc BuildRequires: make @@ -50,12 +47,10 @@ tcp, var, xkey %prep -%autosetup -n %{name}-%{commit} -#autosetup +%autosetup %build -sh bootstrap %configure %make_build @@ -80,7 +75,10 @@ sed -i 's,tests/xkey/test12.vtc,,' src/Makefile %{_mandir}/man3/*.3* %changelog -* Tue Mar 17 2020 Ingvar Hagelund - 0.15.1-0.1.20200317git21d0c84 +* Sat Mar 28 2020 Ingvar Hagelund - 0.16.0-1 +- New upstream release + +* Tue Mar 17 2020 Ingvar Hagelund - 0.16.0-0.1.20200317git21d0c84 - Snapshot from 6.4 branch, rebuilt against varnish-6.4.0 - Removed patches merged upstream - Delete 64-bit specific test on 32-bit arches From e9d0c6bd0196571c556567c9455c5c7bb103a611 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 29 Jul 2020 13:33:46 +0000 Subject: [PATCH 09/53] - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- varnish-modules.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/varnish-modules.spec b/varnish-modules.spec index 1cc69ad..d39dcb3 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -8,7 +8,7 @@ Name: varnish-modules Version: 0.16.0 -Release: 1%{?dist} +Release: 2%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL License: BSD @@ -75,6 +75,9 @@ sed -i 's,tests/xkey/test12.vtc,,' src/Makefile %{_mandir}/man3/*.3* %changelog +* Wed Jul 29 2020 Fedora Release Engineering - 0.16.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + * Sat Mar 28 2020 Ingvar Hagelund - 0.16.0-1 - New upstream release From 8bf28a6b3b5e428519a7fa3cc16363bdfe544901 Mon Sep 17 00:00:00 2001 From: Ingvar Hagelund Date: Mon, 17 Aug 2020 09:34:42 +0200 Subject: [PATCH 10/53] Rebuilt for varnish-6.4.0 --- varnish-modules.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/varnish-modules.spec b/varnish-modules.spec index d39dcb3..5375ef6 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -8,7 +8,7 @@ Name: varnish-modules Version: 0.16.0 -Release: 2%{?dist} +Release: 3%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL License: BSD @@ -75,6 +75,9 @@ sed -i 's,tests/xkey/test12.vtc,,' src/Makefile %{_mandir}/man3/*.3* %changelog +* Mon Aug 17 2020 Ingvar Hagelund - 0.16.0-3 +- Rebuilt for varnish-6.4.0 + * Wed Jul 29 2020 Fedora Release Engineering - 0.16.0-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild From 340e75cb09e9599a14f8d1082a3997f0c6434664 Mon Sep 17 00:00:00 2001 From: Ingvar Hagelund Date: Wed, 16 Sep 2020 17:34:50 +0200 Subject: [PATCH 11/53] Switched upstream to Nils Goroll's fork which is the defacto current upstream Synced description to reality This is a snapshot build that needs autotools for building Rebuilt for varnish-6.5.0 --- .gitignore | 1 + sources | 2 +- varnish-modules.spec | 32 ++++++++++++++++++++++---------- 3 files changed, 24 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index 789acef..e722d1d 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ /varnish-modules-0.15.0.tar.gz /varnish-modules-0032ed8.tar.gz /varnish-modules-0.16.0.tar.gz +/varnish-modules-4d6593c.tar.gz diff --git a/sources b/sources index 90bd340..7a6624f 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (varnish-modules-0.16.0.tar.gz) = 614bb99cf48d33710f06ed52bacff092c8a60ddd8f5eb55470cf571e44ca01cc9696b4c8669dc6979ab7096762cb6ef80435e210aa38f9eaaf31a1dd73d858e2 +SHA512 (varnish-modules-4d6593c.tar.gz) = bb118cd844e0519db2dea0b3b4be1f3fda8760e9380537cd1e2a3ef52b2156ed51b608b02a9ce021ec25a405ffa4e5b9bbe811d6c410dab93ff1a4207f694416 diff --git a/varnish-modules.spec b/varnish-modules.spec index 5375ef6..9d86f64 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -1,20 +1,23 @@ %global varnishver %(pkg-config --silence-errors --modversion varnishapi || echo 0) +%global commit 4d6593c2c97ecbabd3bd68203bace9cdbd6e960c +%global shortcommit %(c=%{commit}; echo ${c:0:7}) %if 0%{?rhel} == 7 || 0%{?rhel} == 6 %global docutils python34-docutils +%global rst2man rst2man-3.4 %else %global docutils python3-docutils +%global rst2man rst2man %endif Name: varnish-modules -Version: 0.16.0 -Release: 3%{?dist} +Version: 0.17.0 +Release: 0.1.klarlack.20200916git%{shortcommit}%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL License: BSD -URL: https://github.com/varnish/%{name} -#Source: https://download.varnish-software.com/varnish-modules/#{name}-#{version}.tar.gz -Source: https://github.com/varnish/varnish-modules/releases/download/%{name}-%{version}/%{name}-%{version}.tar.gz +URL: https://github.com/nigoroll/varnish-modules +Source: https://github.com/nigoroll/%{name}/archive/%{commit}/%{name}-%{shortcommit}.tar.gz BuildRequires: gcc BuildRequires: make @@ -41,25 +44,27 @@ Provides: vmod-xkey = %{version}-%{release} %description This is a collection of modules ("vmods") extending Varnish VCL used for describing HTTP request/response policies with additional -capabilities. This collection contains the following vmods (previously -kept individually): vsthrottle, header, saintmode, softpurge, -tcp, var, xkey +capabilities. This collection contains the following vmods: +bodyaccess, header, saintmode, tcp, var, vsthrottle, xkey %prep -%autosetup +%autosetup -n %{name}-%{commit} %build +sh bootstrap +export RST2MAN=%{rst2man} %configure - %make_build + %install %make_install docdir=%_pkgdocdir find %{buildroot}/%{_libdir}/ -name '*.la' -exec rm -f {} ';' rm %{buildroot}%{_pkgdocdir}/LICENSE # Rather use license macro + %check %ifarch %ix86 %arm ppc # 64-bit specific test @@ -74,7 +79,14 @@ sed -i 's,tests/xkey/test12.vtc,,' src/Makefile %{_libdir}/varnish/vmods/* %{_mandir}/man3/*.3* + %changelog +* Wed Sep 16 2020 Ingvar Hagelund - 0.17.0-0.1.klarlack.20200916git +- Switched upstream to Nils Goroll's fork which is the defacto current upstream +- Synced description to reality +- This is a snapshot build that needs autotools for building +- Rebuilt for varnish-6.5.0 + * Mon Aug 17 2020 Ingvar Hagelund - 0.16.0-3 - Rebuilt for varnish-6.4.0 From 2a9d075e350b7e004a291caeec3c4a0c9c5a9999 Mon Sep 17 00:00:00 2001 From: Ingvar Hagelund Date: Tue, 29 Sep 2020 10:31:43 +0200 Subject: [PATCH 12/53] Rebuilt for varnish-6.5.1 --- varnish-modules.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/varnish-modules.spec b/varnish-modules.spec index 9d86f64..ae3a4e3 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -12,7 +12,7 @@ Name: varnish-modules Version: 0.17.0 -Release: 0.1.klarlack.20200916git%{shortcommit}%{?dist} +Release: 0.2.klarlack.20200916git%{shortcommit}%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL License: BSD @@ -81,6 +81,9 @@ sed -i 's,tests/xkey/test12.vtc,,' src/Makefile %changelog +* Tue Sep 29 2020 Ingvar Hagelund - 0.17.0-0.2.klarlack.20200916git +- Rebuilt for varnish-6.5.1 + * Wed Sep 16 2020 Ingvar Hagelund - 0.17.0-0.1.klarlack.20200916git - Switched upstream to Nils Goroll's fork which is the defacto current upstream - Synced description to reality From e2d45a9f844b7af8560663d0eb60edf8bb24ddc5 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 27 Jan 2021 22:55:21 +0000 Subject: [PATCH 13/53] - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- varnish-modules.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/varnish-modules.spec b/varnish-modules.spec index ae3a4e3..ce1de1f 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -12,7 +12,7 @@ Name: varnish-modules Version: 0.17.0 -Release: 0.2.klarlack.20200916git%{shortcommit}%{?dist} +Release: 0.3.klarlack.20200916git%{shortcommit}%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL License: BSD @@ -81,6 +81,9 @@ sed -i 's,tests/xkey/test12.vtc,,' src/Makefile %changelog +* Wed Jan 27 2021 Fedora Release Engineering - 0.17.0-0.3.klarlack.20200916git4d6593c +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + * Tue Sep 29 2020 Ingvar Hagelund - 0.17.0-0.2.klarlack.20200916git - Rebuilt for varnish-6.5.1 From 9b7be58d03161deb9bd14a8a67f08b4f119fa9f0 Mon Sep 17 00:00:00 2001 From: Ingvar Hagelund Date: Wed, 17 Mar 2021 17:00:18 +0100 Subject: [PATCH 14/53] New upstream release Switched back to original varnish github upstream, as it has catched up Includes fix for CVE-2021-28543, VSV00006, bz#1939669 --- varnish-modules.spec | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/varnish-modules.spec b/varnish-modules.spec index ce1de1f..1be558d 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -1,6 +1,5 @@ %global varnishver %(pkg-config --silence-errors --modversion varnishapi || echo 0) -%global commit 4d6593c2c97ecbabd3bd68203bace9cdbd6e960c -%global shortcommit %(c=%{commit}; echo ${c:0:7}) +%global gittag 0.17.1 %if 0%{?rhel} == 7 || 0%{?rhel} == 6 %global docutils python34-docutils @@ -11,13 +10,13 @@ %endif Name: varnish-modules -Version: 0.17.0 -Release: 0.3.klarlack.20200916git%{shortcommit}%{?dist} +Version: 0.17.1 +Release: 1%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL License: BSD -URL: https://github.com/nigoroll/varnish-modules -Source: https://github.com/nigoroll/%{name}/archive/%{commit}/%{name}-%{shortcommit}.tar.gz +URL: https://github.com/varnish/varnish-modules +Source: https://github.com/varnish/varnish-modules/archive/%{gittag}/%{name}-%{version}.tar.gz BuildRequires: gcc BuildRequires: make @@ -49,7 +48,7 @@ bodyaccess, header, saintmode, tcp, var, vsthrottle, xkey %prep -%autosetup -n %{name}-%{commit} +%autosetup -n %{name}-%{gittag} %build @@ -74,13 +73,19 @@ sed -i 's,tests/xkey/test12.vtc,,' src/Makefile %files -%doc docs AUTHORS CHANGES.rst COPYING README.rst +#doc docs AUTHORS CHANGES.rst COPYING README.rst +%doc AUTHORS CHANGES.rst COPYING README.rst %license LICENSE %{_libdir}/varnish/vmods/* %{_mandir}/man3/*.3* %changelog +* Wed Mar 17 2021 Ingvar Hagelund 0.17.1-1 +- New upstream release +- Switched back to original varnish github upstream, as it has catched up +- Includes fix for CVE-2021-28543, VSV00006, bz#1939669 + * Wed Jan 27 2021 Fedora Release Engineering - 0.17.0-0.3.klarlack.20200916git4d6593c - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild From 3e62ab6e0919e8d64e271ec15eec6712e9707732 Mon Sep 17 00:00:00 2001 From: Ingvar Hagelund Date: Wed, 17 Mar 2021 17:05:24 +0100 Subject: [PATCH 15/53] add source for varnish-modules-0.17.1 --- .gitignore | 1 + sources | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index e722d1d..fceb9c3 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ /varnish-modules-0032ed8.tar.gz /varnish-modules-0.16.0.tar.gz /varnish-modules-4d6593c.tar.gz +/varnish-modules-0.17.1.tar.gz diff --git a/sources b/sources index 7a6624f..18c22fe 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (varnish-modules-4d6593c.tar.gz) = bb118cd844e0519db2dea0b3b4be1f3fda8760e9380537cd1e2a3ef52b2156ed51b608b02a9ce021ec25a405ffa4e5b9bbe811d6c410dab93ff1a4207f694416 +SHA512 (varnish-modules-0.17.1.tar.gz) = 354f06f6da7c87a3ba28f1871870ec52bba1af40622c6176c1a1cae70f0bbf5f658206f82c4542eb7e8e7c7ef5e03a2cff598e6f799d3a4fdcc5e7113ce0900f From 6dcb8de304f0e217fd91baab9760d8a80f9c1973 Mon Sep 17 00:00:00 2001 From: Ingvar Hagelund Date: Tue, 18 May 2021 15:56:51 +0200 Subject: [PATCH 16/53] New upstream release Rebuilt for varnish-6.6.0 --- .gitignore | 1 + sources | 2 +- varnish-modules.spec | 10 +++++++--- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index fceb9c3..07c5dd1 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ /varnish-modules-0.16.0.tar.gz /varnish-modules-4d6593c.tar.gz /varnish-modules-0.17.1.tar.gz +/varnish-modules-0.18.0.tar.gz diff --git a/sources b/sources index 18c22fe..cd31729 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (varnish-modules-0.17.1.tar.gz) = 354f06f6da7c87a3ba28f1871870ec52bba1af40622c6176c1a1cae70f0bbf5f658206f82c4542eb7e8e7c7ef5e03a2cff598e6f799d3a4fdcc5e7113ce0900f +SHA512 (varnish-modules-0.18.0.tar.gz) = a6a56ea371ebe8183926e5411f8b4ee7bb47cc45464cfffb2f4a8d17b04b156889bcbe254845058ded2e712ed21ee73e6e98eb29f72d922f1fbbfc1cc506d9f1 diff --git a/varnish-modules.spec b/varnish-modules.spec index 1be558d..93c36ee 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -1,5 +1,5 @@ %global varnishver %(pkg-config --silence-errors --modversion varnishapi || echo 0) -%global gittag 0.17.1 +%global gittag 0.18.0 %if 0%{?rhel} == 7 || 0%{?rhel} == 6 %global docutils python34-docutils @@ -10,7 +10,7 @@ %endif Name: varnish-modules -Version: 0.17.1 +Version: 0.18.0 Release: 1%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL @@ -74,13 +74,17 @@ sed -i 's,tests/xkey/test12.vtc,,' src/Makefile %files #doc docs AUTHORS CHANGES.rst COPYING README.rst -%doc AUTHORS CHANGES.rst COPYING README.rst +%doc AUTHORS CHANGES.rst COPYING README.md %license LICENSE %{_libdir}/varnish/vmods/* %{_mandir}/man3/*.3* %changelog +* Tue May 18 2021 Ingvar Hagelund 0.18.0-1 +- New upstream release +- Rebuilt for varnish-6.6.0 + * Wed Mar 17 2021 Ingvar Hagelund 0.17.1-1 - New upstream release - Switched back to original varnish github upstream, as it has catched up From 29164248258b48012a68f07971c8cc8fe582cd4d Mon Sep 17 00:00:00 2001 From: Ingvar Hagelund Date: Sat, 17 Jul 2021 10:54:29 +0200 Subject: [PATCH 17/53] Rebuilt for varnish-6.6.1 --- varnish-modules.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/varnish-modules.spec b/varnish-modules.spec index 93c36ee..71951da 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -11,7 +11,7 @@ Name: varnish-modules Version: 0.18.0 -Release: 1%{?dist} +Release: 2%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL License: BSD @@ -81,6 +81,9 @@ sed -i 's,tests/xkey/test12.vtc,,' src/Makefile %changelog +* Sat Jul 17 2021 Ingvar Hagelund 0.18.0-2 +- Rebuilt for varnish-6.6.1 + * Tue May 18 2021 Ingvar Hagelund 0.18.0-1 - New upstream release - Rebuilt for varnish-6.6.0 From 93f3454722a9c5e4e780144af95b2218c6f5aa11 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 23 Jul 2021 20:19:11 +0000 Subject: [PATCH 18/53] - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- varnish-modules.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/varnish-modules.spec b/varnish-modules.spec index 71951da..7bfde02 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -11,7 +11,7 @@ Name: varnish-modules Version: 0.18.0 -Release: 2%{?dist} +Release: 3%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL License: BSD @@ -81,6 +81,9 @@ sed -i 's,tests/xkey/test12.vtc,,' src/Makefile %changelog +* Fri Jul 23 2021 Fedora Release Engineering - 0.18.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + * Sat Jul 17 2021 Ingvar Hagelund 0.18.0-2 - Rebuilt for varnish-6.6.1 From 27cf399d7e117d2b261db6fdab95a079c08765f3 Mon Sep 17 00:00:00 2001 From: Ingvar Hagelund Date: Mon, 4 Oct 2021 20:18:26 +0200 Subject: [PATCH 19/53] New upstream release Built for varnish-7.0.0 --- .gitignore | 1 + sources | 2 +- varnish-modules.spec | 15 ++++++++++----- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index 07c5dd1..7017fad 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ /varnish-modules-4d6593c.tar.gz /varnish-modules-0.17.1.tar.gz /varnish-modules-0.18.0.tar.gz +/varnish-modules-0.19.0.tar.gz diff --git a/sources b/sources index cd31729..5451d50 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (varnish-modules-0.18.0.tar.gz) = a6a56ea371ebe8183926e5411f8b4ee7bb47cc45464cfffb2f4a8d17b04b156889bcbe254845058ded2e712ed21ee73e6e98eb29f72d922f1fbbfc1cc506d9f1 +SHA512 (varnish-modules-0.19.0.tar.gz) = fc6f4c1695f80fa3b267c13c772dca9cf577eed38c733207cf0f8e01b5d4ebabbe43e936974ba70338a663a45624254759cfd75f8fbae0202361238ee5f15cef diff --git a/varnish-modules.spec b/varnish-modules.spec index 7bfde02..3013108 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -10,13 +10,13 @@ %endif Name: varnish-modules -Version: 0.18.0 -Release: 3%{?dist} +Version: 0.19.0 +Release: 1%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL License: BSD URL: https://github.com/varnish/varnish-modules -Source: https://github.com/varnish/varnish-modules/archive/%{gittag}/%{name}-%{version}.tar.gz +Source: https://github.com/varnish/%{name}/releases/download/%{version}/%{name}-%{version}.tar.gz BuildRequires: gcc BuildRequires: make @@ -48,11 +48,12 @@ bodyaccess, header, saintmode, tcp, var, vsthrottle, xkey %prep -%autosetup -n %{name}-%{gittag} +#autosetup -n #{name}-#{gittag} +%autosetup %build -sh bootstrap +#sh bootstrap export RST2MAN=%{rst2man} %configure %make_build @@ -81,6 +82,10 @@ sed -i 's,tests/xkey/test12.vtc,,' src/Makefile %changelog +* Thu Sep 23 2021 Ingvar Hagelund - 0.19.0-1 +- New upstream release +- Built for varnish-7.0.0 + * Fri Jul 23 2021 Fedora Release Engineering - 0.18.0-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild From 543f609a998d4ad7b80c26f671beddc390ffb912 Mon Sep 17 00:00:00 2001 From: Ingvar Hagelund Date: Tue, 18 Jan 2022 20:07:11 +0100 Subject: [PATCH 20/53] Built for varnish-7.0.1 --- varnish-modules.spec | 3 +++ 1 file changed, 3 insertions(+) diff --git a/varnish-modules.spec b/varnish-modules.spec index 3013108..7c05417 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -82,6 +82,9 @@ sed -i 's,tests/xkey/test12.vtc,,' src/Makefile %changelog +* Tue Jan 18 2022 Ingvar Hagelund - 0.19.0-2 +- Built for varnish-7.0.1 + * Thu Sep 23 2021 Ingvar Hagelund - 0.19.0-1 - New upstream release - Built for varnish-7.0.0 From 22dcc668e57d84a055ce6df565aef4740d45b659 Mon Sep 17 00:00:00 2001 From: Ingvar Hagelund Date: Tue, 18 Jan 2022 20:09:36 +0100 Subject: [PATCH 21/53] forgot to up %release --- varnish-modules.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/varnish-modules.spec b/varnish-modules.spec index 7c05417..7d89e5a 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -11,7 +11,7 @@ Name: varnish-modules Version: 0.19.0 -Release: 1%{?dist} +Release: 2%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL License: BSD From 16c71a94e4092ae315c3f0755d9f94fba4891f4d Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 22 Jan 2022 03:48:29 +0000 Subject: [PATCH 22/53] - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- varnish-modules.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/varnish-modules.spec b/varnish-modules.spec index 7d89e5a..108e54f 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -11,7 +11,7 @@ Name: varnish-modules Version: 0.19.0 -Release: 2%{?dist} +Release: 3%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL License: BSD @@ -82,6 +82,9 @@ sed -i 's,tests/xkey/test12.vtc,,' src/Makefile %changelog +* Sat Jan 22 2022 Fedora Release Engineering - 0.19.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + * Tue Jan 18 2022 Ingvar Hagelund - 0.19.0-2 - Built for varnish-7.0.1 From f51397838ece934f53cce33cc004a22420fc25fd Mon Sep 17 00:00:00 2001 From: Ingvar Hagelund Date: Thu, 10 Feb 2022 11:47:41 +0100 Subject: [PATCH 23/53] Built for varnish-7.0.2 --- varnish-modules.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/varnish-modules.spec b/varnish-modules.spec index 108e54f..f18eaa5 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -11,7 +11,7 @@ Name: varnish-modules Version: 0.19.0 -Release: 3%{?dist} +Release: 4%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL License: BSD @@ -82,6 +82,9 @@ sed -i 's,tests/xkey/test12.vtc,,' src/Makefile %changelog +* Thu Feb 10 2022 Ingvar Hagelund - 0.19.0-4 +- Built for varnish-7.0.2 + * Sat Jan 22 2022 Fedora Release Engineering - 0.19.0-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild From 94b56b762f893c98b6b38bba856e50b26cbb6526 Mon Sep 17 00:00:00 2001 From: Ingvar Hagelund Date: Mon, 4 Apr 2022 14:26:42 +0200 Subject: [PATCH 24/53] Built for varnish-7.1.0 Now provides vmod(name) instead of vmod-name, matching varnish' provides --- .gitignore | 1 + sources | 2 +- varnish-modules.spec | 31 ++++++++++++++++++------------- 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/.gitignore b/.gitignore index 7017fad..9d1f313 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ /varnish-modules-0.17.1.tar.gz /varnish-modules-0.18.0.tar.gz /varnish-modules-0.19.0.tar.gz +/varnish-modules-0.20.0.tar.gz diff --git a/sources b/sources index 5451d50..08d951d 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (varnish-modules-0.19.0.tar.gz) = fc6f4c1695f80fa3b267c13c772dca9cf577eed38c733207cf0f8e01b5d4ebabbe43e936974ba70338a663a45624254759cfd75f8fbae0202361238ee5f15cef +SHA512 (varnish-modules-0.20.0.tar.gz) = e63d6da8f63a5ce56bc7a5a1dd1a908e4ab0f6a36b5bdc5709dca2aa9c0b474bd8a06491ed3dee23636d335241ced4c7ef017b57413b05792ad382f6306a0b36 diff --git a/varnish-modules.spec b/varnish-modules.spec index f18eaa5..7326314 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -10,8 +10,8 @@ %endif Name: varnish-modules -Version: 0.19.0 -Release: 4%{?dist} +Version: 0.20.0 +Release: 1%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL License: BSD @@ -24,21 +24,22 @@ BuildRequires: pkgconfig(varnishapi) BuildRequires: varnish # Build from a git checkout -BuildRequires: automake -BuildRequires: autoconf -BuildRequires: libtool +#BuildRequires: automake +#BuildRequires: autoconf +#BuildRequires: libtool BuildRequires: %docutils Requires: varnish = %varnishver -Provides: vmod-bodyaccess = %{version}-%{release} -Provides: vmod-header = %{version}-%{release} -Provides: vmod-saintmode = %{version}-%{release} -Provides: vmod-tcp = %{version}-%{release} -Provides: vmod-var = %{version}-%{release} -Provides: vmod-vsthrottle = %{version}-%{release} -Provides: vmod-xkey = %{version}-%{release} - +Provides: vmod(accept)%{_isa} = %{version}-%{release} +Provides: vmod(bodyaccess)%{_isa} = %{version}-%{release} +Provides: vmod(header)%{_isa} = %{version}-%{release} +Provides: vmod(saintmode)%{_isa} = %{version}-%{release} +Provides: vmod(tcp)%{_isa} = %{version}-%{release} +Provides: vmod(var)%{_isa} = %{version}-%{release} +Provides: vmod(vsthrottle)%{_isa} = %{version}-%{release} +Provides: vmod(xkey)%{_isa} = %{version}-%{release} +Provides: vmod(str)%{_isa} = %{version}-%{release} %description This is a collection of modules ("vmods") extending Varnish VCL used @@ -82,6 +83,10 @@ sed -i 's,tests/xkey/test12.vtc,,' src/Makefile %changelog +* Tue Mar 29 2022 Ingvar Hagelund - 0.20.0-1 +- Built for varnish-7.1.0 +- Now provides vmod(name) instead of vmod-name, matching varnish' provides + * Thu Feb 10 2022 Ingvar Hagelund - 0.19.0-4 - Built for varnish-7.0.2 From 0c6c06513fad7552199e614d724ba4fa1c2acd67 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 23 Jul 2022 11:41:59 +0000 Subject: [PATCH 25/53] Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- varnish-modules.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/varnish-modules.spec b/varnish-modules.spec index 7326314..b174b08 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -11,7 +11,7 @@ Name: varnish-modules Version: 0.20.0 -Release: 1%{?dist} +Release: 2%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL License: BSD @@ -83,6 +83,9 @@ sed -i 's,tests/xkey/test12.vtc,,' src/Makefile %changelog +* Sat Jul 23 2022 Fedora Release Engineering - 0.20.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + * Tue Mar 29 2022 Ingvar Hagelund - 0.20.0-1 - Built for varnish-7.1.0 - Now provides vmod(name) instead of vmod-name, matching varnish' provides From 330de345c767232c15931a39f2c40a9be98bd2ac Mon Sep 17 00:00:00 2001 From: Ingvar Hagelund Date: Mon, 15 Aug 2022 09:13:03 +0200 Subject: [PATCH 26/53] Built for varnish-7.1.1 --- varnish-modules.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/varnish-modules.spec b/varnish-modules.spec index b174b08..2669d89 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -11,7 +11,7 @@ Name: varnish-modules Version: 0.20.0 -Release: 2%{?dist} +Release: 3%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL License: BSD @@ -83,6 +83,9 @@ sed -i 's,tests/xkey/test12.vtc,,' src/Makefile %changelog +* Mon Aug 15 2022 Ingvar Hagelund - 0.20.0-3 +- Built for varnish-7.1.1 + * Sat Jul 23 2022 Fedora Release Engineering - 0.20.0-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild From e27e672ae520d79ea250135aaf17d49b10b28b3a Mon Sep 17 00:00:00 2001 From: Ingvar Hagelund Date: Mon, 26 Sep 2022 15:01:15 +0200 Subject: [PATCH 27/53] New upstream release Removed unused macros from specfile Built for varnish-7.2.0 --- .gitignore | 1 + sources | 2 +- varnish-modules.spec | 13 ++++++++----- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index 9d1f313..8488427 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ /varnish-modules-0.18.0.tar.gz /varnish-modules-0.19.0.tar.gz /varnish-modules-0.20.0.tar.gz +/varnish-modules-0.21.0.tar.gz diff --git a/sources b/sources index 08d951d..4015eef 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (varnish-modules-0.20.0.tar.gz) = e63d6da8f63a5ce56bc7a5a1dd1a908e4ab0f6a36b5bdc5709dca2aa9c0b474bd8a06491ed3dee23636d335241ced4c7ef017b57413b05792ad382f6306a0b36 +SHA512 (varnish-modules-0.21.0.tar.gz) = a442f58968b471d713c99a94e5b80302c07ea163d3d5022d768eb0b39ab081f18744fd529b04283b0c6ec942f362197935d8ef1aa04f26eff10a81425a63bd35 diff --git a/varnish-modules.spec b/varnish-modules.spec index 2669d89..e47d984 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -1,7 +1,6 @@ %global varnishver %(pkg-config --silence-errors --modversion varnishapi || echo 0) -%global gittag 0.18.0 -%if 0%{?rhel} == 7 || 0%{?rhel} == 6 +%if 0%{?rhel} == 7 %global docutils python34-docutils %global rst2man rst2man-3.4 %else @@ -10,8 +9,8 @@ %endif Name: varnish-modules -Version: 0.20.0 -Release: 3%{?dist} +Version: 0.21.0 +Release: 1%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL License: BSD @@ -49,7 +48,6 @@ bodyaccess, header, saintmode, tcp, var, vsthrottle, xkey %prep -#autosetup -n #{name}-#{gittag} %autosetup @@ -83,6 +81,11 @@ sed -i 's,tests/xkey/test12.vtc,,' src/Makefile %changelog +* Mon Sep 26 2022 Ingvar Hagelund - 0.21.0-1 +- New upstream release +- Removed unused macros from specfile +- Built for varnish-7.2.0 + * Mon Aug 15 2022 Ingvar Hagelund - 0.20.0-3 - Built for varnish-7.1.1 From 96e882feaf72f9e601fa7b471c7e129ed52d3bf4 Mon Sep 17 00:00:00 2001 From: Ingvar Hagelund Date: Sun, 13 Nov 2022 14:10:43 +0100 Subject: [PATCH 28/53] Built for varnish-7.2.1 --- varnish-modules.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/varnish-modules.spec b/varnish-modules.spec index e47d984..a8bcf29 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -10,7 +10,7 @@ Name: varnish-modules Version: 0.21.0 -Release: 1%{?dist} +Release: 2%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL License: BSD @@ -81,6 +81,9 @@ sed -i 's,tests/xkey/test12.vtc,,' src/Makefile %changelog +* Sun Nov 13 2022 Ingvar Hagelund - 0.21.0-2 +- Built for varnish-7.2.1 + * Mon Sep 26 2022 Ingvar Hagelund - 0.21.0-1 - New upstream release - Removed unused macros from specfile From ffd7bda46a42be569a8c7d3f81b0aee6f8d8d436 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 21 Jan 2023 06:07:17 +0000 Subject: [PATCH 29/53] Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- varnish-modules.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/varnish-modules.spec b/varnish-modules.spec index a8bcf29..5b098bc 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -10,7 +10,7 @@ Name: varnish-modules Version: 0.21.0 -Release: 2%{?dist} +Release: 3%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL License: BSD @@ -81,6 +81,9 @@ sed -i 's,tests/xkey/test12.vtc,,' src/Makefile %changelog +* Sat Jan 21 2023 Fedora Release Engineering - 0.21.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + * Sun Nov 13 2022 Ingvar Hagelund - 0.21.0-2 - Built for varnish-7.2.1 From 73ede280ee45eab7ca556879975f4a2e0cc5d10f Mon Sep 17 00:00:00 2001 From: Ingvar Hagelund Date: Sun, 19 Mar 2023 02:07:48 +0100 Subject: [PATCH 30/53] New upstream release Built for varnish-7.3.0 --- .gitignore | 1 + sources | 2 +- varnish-modules.spec | 8 ++++++-- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 8488427..38bb9f8 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ /varnish-modules-0.19.0.tar.gz /varnish-modules-0.20.0.tar.gz /varnish-modules-0.21.0.tar.gz +/varnish-modules-0.22.0.tar.gz diff --git a/sources b/sources index 4015eef..57391ad 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (varnish-modules-0.21.0.tar.gz) = a442f58968b471d713c99a94e5b80302c07ea163d3d5022d768eb0b39ab081f18744fd529b04283b0c6ec942f362197935d8ef1aa04f26eff10a81425a63bd35 +SHA512 (varnish-modules-0.22.0.tar.gz) = 597ac1161224a25c11183fbaaf25412c8f8e0af3bf58fa76161328d8ae97aa7c485cfa6ed50e9f24ce73eca9ddeeb87ee4998427382c0fce633bf43eaf08068a diff --git a/varnish-modules.spec b/varnish-modules.spec index 5b098bc..0110d92 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -9,8 +9,8 @@ %endif Name: varnish-modules -Version: 0.21.0 -Release: 3%{?dist} +Version: 0.22.0 +Release: 0%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL License: BSD @@ -81,6 +81,10 @@ sed -i 's,tests/xkey/test12.vtc,,' src/Makefile %changelog +* Sat Mar 19 2023 Ingvar Hagelund - 0.22.0-1 +- New upstream release +- Built for varnish-7.3.0 + * Sat Jan 21 2023 Fedora Release Engineering - 0.21.0-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild From 882c27d51d515a68b2f578b0a9b140871057dee8 Mon Sep 17 00:00:00 2001 From: Ingvar Hagelund Date: Mon, 20 Mar 2023 23:33:50 +0100 Subject: [PATCH 31/53] typofix --- varnish-modules.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/varnish-modules.spec b/varnish-modules.spec index 0110d92..520df87 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -10,7 +10,7 @@ Name: varnish-modules Version: 0.22.0 -Release: 0%{?dist} +Release: 1%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL License: BSD @@ -81,7 +81,7 @@ sed -i 's,tests/xkey/test12.vtc,,' src/Makefile %changelog -* Sat Mar 19 2023 Ingvar Hagelund - 0.22.0-1 +* Sun Mar 19 2023 Ingvar Hagelund - 0.22.0-1 - New upstream release - Built for varnish-7.3.0 From 29ad285f00c83a25a5041bce259427bc1fce5e7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lubo=C5=A1=20Uhliarik?= Date: Tue, 6 Jun 2023 16:43:05 +0200 Subject: [PATCH 32/53] SPDX migration --- varnish-modules.spec | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/varnish-modules.spec b/varnish-modules.spec index 520df87..511e3d5 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -10,10 +10,10 @@ Name: varnish-modules Version: 0.22.0 -Release: 1%{?dist} +Release: 2%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL -License: BSD +License: BSD-2-Clause URL: https://github.com/varnish/varnish-modules Source: https://github.com/varnish/%{name}/releases/download/%{version}/%{name}-%{version}.tar.gz @@ -81,6 +81,9 @@ sed -i 's,tests/xkey/test12.vtc,,' src/Makefile %changelog +* Tue Jun 06 2023 LuboÅ¡ Uhliarik - 0.22.0-2 +- SPDX migration + * Sun Mar 19 2023 Ingvar Hagelund - 0.22.0-1 - New upstream release - Built for varnish-7.3.0 From fb9883a65a554b886e6822fef9ac86b5a3fa145f Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 22 Jul 2023 17:25:59 +0000 Subject: [PATCH 33/53] Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- varnish-modules.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/varnish-modules.spec b/varnish-modules.spec index 511e3d5..7128aa8 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -10,7 +10,7 @@ Name: varnish-modules Version: 0.22.0 -Release: 2%{?dist} +Release: 3%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL License: BSD-2-Clause @@ -81,6 +81,9 @@ sed -i 's,tests/xkey/test12.vtc,,' src/Makefile %changelog +* Sat Jul 22 2023 Fedora Release Engineering - 0.22.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + * Tue Jun 06 2023 LuboÅ¡ Uhliarik - 0.22.0-2 - SPDX migration From 6ed3472197c782dff648391675c5468b53d15246 Mon Sep 17 00:00:00 2001 From: Ingvar Hagelund Date: Wed, 15 Nov 2023 16:36:58 +0100 Subject: [PATCH 34/53] Rebuilt for varnish-7.4.2 --- varnish-modules.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/varnish-modules.spec b/varnish-modules.spec index 7128aa8..f65ec94 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -10,7 +10,7 @@ Name: varnish-modules Version: 0.22.0 -Release: 3%{?dist} +Release: 4%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL License: BSD-2-Clause @@ -81,6 +81,9 @@ sed -i 's,tests/xkey/test12.vtc,,' src/Makefile %changelog +* Wed Nov 15 2023 Ingvar Hagelund - 0.22.0-4 +- Rebuilt for varnish-7.4.2 + * Sat Jul 22 2023 Fedora Release Engineering - 0.22.0-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild From 10488a6706d3014e7a0e554cc71472e5e5eb6441 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 27 Jan 2024 07:31:08 +0000 Subject: [PATCH 35/53] Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild --- varnish-modules.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/varnish-modules.spec b/varnish-modules.spec index f65ec94..cea27b2 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -10,7 +10,7 @@ Name: varnish-modules Version: 0.22.0 -Release: 4%{?dist} +Release: 5%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL License: BSD-2-Clause @@ -81,6 +81,9 @@ sed -i 's,tests/xkey/test12.vtc,,' src/Makefile %changelog +* Sat Jan 27 2024 Fedora Release Engineering - 0.22.0-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + * Wed Nov 15 2023 Ingvar Hagelund - 0.22.0-4 - Rebuilt for varnish-7.4.2 From 2364b8f829f59e09bcbb3a25c82e9051f6b5626c Mon Sep 17 00:00:00 2001 From: Ingvar Hagelund Date: Tue, 2 Apr 2024 16:26:38 +0200 Subject: [PATCH 36/53] New upstream release matching varnish-7.5.0 --- .gitignore | 1 + sources | 2 +- varnish-modules.spec | 7 +++++-- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 38bb9f8..d1d9b1c 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ /varnish-modules-0.20.0.tar.gz /varnish-modules-0.21.0.tar.gz /varnish-modules-0.22.0.tar.gz +/varnish-modules-0.24.0.tar.gz diff --git a/sources b/sources index 57391ad..ff909d8 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (varnish-modules-0.22.0.tar.gz) = 597ac1161224a25c11183fbaaf25412c8f8e0af3bf58fa76161328d8ae97aa7c485cfa6ed50e9f24ce73eca9ddeeb87ee4998427382c0fce633bf43eaf08068a +SHA512 (varnish-modules-0.24.0.tar.gz) = fd1b1b7ff61654e568df208229eb1af0086c98726592d1269ca5e13b24ce292a4ec6aeea52a5469f465ca426019629ef5db5a54dfed7f1fd2f0a4b50c92503a6 diff --git a/varnish-modules.spec b/varnish-modules.spec index cea27b2..86241ec 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -9,8 +9,8 @@ %endif Name: varnish-modules -Version: 0.22.0 -Release: 5%{?dist} +Version: 0.24.0 +Release: 1%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL License: BSD-2-Clause @@ -81,6 +81,9 @@ sed -i 's,tests/xkey/test12.vtc,,' src/Makefile %changelog +* Tue Apr 02 2024 Ingvar Hagelund - 0.24.0 +- New upstream release matching varnish-7.5.0 + * Sat Jan 27 2024 Fedora Release Engineering - 0.22.0-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild From bfdd7a9fdc99888a06f340fe889d7a93c715463e Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 20 Jul 2024 08:35:03 +0000 Subject: [PATCH 37/53] Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild --- varnish-modules.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/varnish-modules.spec b/varnish-modules.spec index 86241ec..7c30be5 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -10,7 +10,7 @@ Name: varnish-modules Version: 0.24.0 -Release: 1%{?dist} +Release: 2%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL License: BSD-2-Clause @@ -81,6 +81,9 @@ sed -i 's,tests/xkey/test12.vtc,,' src/Makefile %changelog +* Sat Jul 20 2024 Fedora Release Engineering - 0.24.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + * Tue Apr 02 2024 Ingvar Hagelund - 0.24.0 - New upstream release matching varnish-7.5.0 From 0755613f99ce32d8b993ac95edcc3d4996a0ef15 Mon Sep 17 00:00:00 2001 From: Ingvar Hagelund Date: Tue, 17 Sep 2024 14:43:10 +0200 Subject: [PATCH 38/53] New upsteam release matching varnish-7.6.0 --- .gitignore | 1 + sources | 2 +- varnish-modules.spec | 7 +++++-- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index d1d9b1c..bba342a 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ /varnish-modules-0.21.0.tar.gz /varnish-modules-0.22.0.tar.gz /varnish-modules-0.24.0.tar.gz +/varnish-modules-0.25.0.tar.gz diff --git a/sources b/sources index ff909d8..5c516f8 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (varnish-modules-0.24.0.tar.gz) = fd1b1b7ff61654e568df208229eb1af0086c98726592d1269ca5e13b24ce292a4ec6aeea52a5469f465ca426019629ef5db5a54dfed7f1fd2f0a4b50c92503a6 +SHA512 (varnish-modules-0.25.0.tar.gz) = 2ad8ebeab165002d1bfba9a2088951fb10ff573f0205d3f04e68921f191441f4026450f3a0b78f2aa96f40c82838a2d4d5f0688141fa7b8241ae7b7a5f507c10 diff --git a/varnish-modules.spec b/varnish-modules.spec index 7c30be5..131e6b2 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -9,8 +9,8 @@ %endif Name: varnish-modules -Version: 0.24.0 -Release: 2%{?dist} +Version: 0.25.0 +Release: 1%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL License: BSD-2-Clause @@ -81,6 +81,9 @@ sed -i 's,tests/xkey/test12.vtc,,' src/Makefile %changelog +* Tue Sep 17 2024 Ingvar Hagelund - 0.25.0-1 +- New upsteam release matching varnish-7.6.0 + * Sat Jul 20 2024 Fedora Release Engineering - 0.24.0-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild From 0d3cd07b0168e6357accfa0d2b26d12699515a3f Mon Sep 17 00:00:00 2001 From: Ingvar Hagelund Date: Fri, 6 Dec 2024 15:33:30 +0100 Subject: [PATCH 39/53] Rebuilt for varnish-7.6.1 --- varnish-modules.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/varnish-modules.spec b/varnish-modules.spec index 131e6b2..651dc98 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -10,7 +10,7 @@ Name: varnish-modules Version: 0.25.0 -Release: 1%{?dist} +Release: 2%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL License: BSD-2-Clause @@ -81,6 +81,9 @@ sed -i 's,tests/xkey/test12.vtc,,' src/Makefile %changelog +* Fri Dec 06 2024 Ingvar Hagelund - 0.25.0-2 +- Rebuilt for varnish-7.6.1 + * Tue Sep 17 2024 Ingvar Hagelund - 0.25.0-1 - New upsteam release matching varnish-7.6.0 From 0393f737dc22f58ede67851d75b84a8e1c2797ed Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sun, 19 Jan 2025 14:07:29 +0000 Subject: [PATCH 40/53] Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild --- varnish-modules.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/varnish-modules.spec b/varnish-modules.spec index 651dc98..14676b3 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -10,7 +10,7 @@ Name: varnish-modules Version: 0.25.0 -Release: 2%{?dist} +Release: 3%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL License: BSD-2-Clause @@ -81,6 +81,9 @@ sed -i 's,tests/xkey/test12.vtc,,' src/Makefile %changelog +* Sun Jan 19 2025 Fedora Release Engineering - 0.25.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + * Fri Dec 06 2024 Ingvar Hagelund - 0.25.0-2 - Rebuilt for varnish-7.6.1 From 81d36841801b4da1537d845fe4ac86097eb6e170 Mon Sep 17 00:00:00 2001 From: Ingvar Hagelund Date: Wed, 26 Mar 2025 19:52:20 +0100 Subject: [PATCH 41/53] New upstream release for varnish-7.7.0 --- .gitignore | 1 + sources | 2 +- varnish-modules.spec | 7 +++++-- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index bba342a..effc3ae 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,4 @@ /varnish-modules-0.22.0.tar.gz /varnish-modules-0.24.0.tar.gz /varnish-modules-0.25.0.tar.gz +/varnish-modules-0.26.0.tar.gz diff --git a/sources b/sources index 5c516f8..a07daaa 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (varnish-modules-0.25.0.tar.gz) = 2ad8ebeab165002d1bfba9a2088951fb10ff573f0205d3f04e68921f191441f4026450f3a0b78f2aa96f40c82838a2d4d5f0688141fa7b8241ae7b7a5f507c10 +SHA512 (varnish-modules-0.26.0.tar.gz) = 2050ec65ae731bddc74743c9aa6246e41ffba8017c404c32e50d45f72f5a02dd3eb2290f8b8e43e25a385a06819836fb19f8540f1cdae394083729ff6b6aed35 diff --git a/varnish-modules.spec b/varnish-modules.spec index 14676b3..368ca79 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -9,8 +9,8 @@ %endif Name: varnish-modules -Version: 0.25.0 -Release: 3%{?dist} +Version: 0.26.0 +Release: 1%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL License: BSD-2-Clause @@ -81,6 +81,9 @@ sed -i 's,tests/xkey/test12.vtc,,' src/Makefile %changelog +* Wed Mar 26 2025 Ingvar Hagelund - 0.26.0-1 +- New upstream release for varnish-7.7.0 + * Sun Jan 19 2025 Fedora Release Engineering - 0.25.0-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild From 6ea465b0a46ed2614dbf59129b027133786bd036 Mon Sep 17 00:00:00 2001 From: Ingvar Hagelund Date: Thu, 22 May 2025 12:38:44 +0200 Subject: [PATCH 42/53] Rebuilt for varnish-7.7.1 --- varnish-modules.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/varnish-modules.spec b/varnish-modules.spec index 368ca79..d42d04d 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -10,7 +10,7 @@ Name: varnish-modules Version: 0.26.0 -Release: 1%{?dist} +Release: 2%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL License: BSD-2-Clause @@ -81,6 +81,9 @@ sed -i 's,tests/xkey/test12.vtc,,' src/Makefile %changelog +* Thu May 22 2025 Ingvar Hagelund - 0.26.1-2 +- Rebuilt for varnish-7.7.1 + * Wed Mar 26 2025 Ingvar Hagelund - 0.26.0-1 - New upstream release for varnish-7.7.0 From 8b1129d9ad6eb8348aaf1cab413299acea95fb0a Mon Sep 17 00:00:00 2001 From: Ingvar Hagelund Date: Sun, 25 May 2025 23:28:12 +0200 Subject: [PATCH 43/53] reset rebuild date --- varnish-modules.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/varnish-modules.spec b/varnish-modules.spec index d42d04d..9f3367c 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -81,7 +81,7 @@ sed -i 's,tests/xkey/test12.vtc,,' src/Makefile %changelog -* Thu May 22 2025 Ingvar Hagelund - 0.26.1-2 +* Sun May 25 2025 Ingvar Hagelund - 0.26.1-2 - Rebuilt for varnish-7.7.1 * Wed Mar 26 2025 Ingvar Hagelund - 0.26.0-1 From de6c53e2cc343377704550d0438151c983201c31 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 25 Jul 2025 19:58:24 +0000 Subject: [PATCH 44/53] Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild --- varnish-modules.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/varnish-modules.spec b/varnish-modules.spec index 9f3367c..c827377 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -10,7 +10,7 @@ Name: varnish-modules Version: 0.26.0 -Release: 2%{?dist} +Release: 3%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL License: BSD-2-Clause @@ -81,6 +81,9 @@ sed -i 's,tests/xkey/test12.vtc,,' src/Makefile %changelog +* Fri Jul 25 2025 Fedora Release Engineering - 0.26.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + * Sun May 25 2025 Ingvar Hagelund - 0.26.1-2 - Rebuilt for varnish-7.7.1 From 76544a522a6d3f24736de262a57819bca7c45155 Mon Sep 17 00:00:00 2001 From: Ingvar Hagelund Date: Mon, 15 Sep 2025 17:27:42 +0200 Subject: [PATCH 45/53] Rebuilt for varnish-7.7.3 --- varnish-modules.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/varnish-modules.spec b/varnish-modules.spec index c827377..9c6551e 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -10,7 +10,7 @@ Name: varnish-modules Version: 0.26.0 -Release: 3%{?dist} +Release: 4%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL License: BSD-2-Clause @@ -81,6 +81,9 @@ sed -i 's,tests/xkey/test12.vtc,,' src/Makefile %changelog +* Mon Sep 15 2025 Ingvar Hagelund - 0.26.0-4 +- Rebuilt for varnish-7.7.3 + * Fri Jul 25 2025 Fedora Release Engineering - 0.26.0-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild From 23d6618718f6a20ace86c056ce4a08cccce04ca0 Mon Sep 17 00:00:00 2001 From: Ingvar Hagelund Date: Wed, 19 Nov 2025 15:11:35 +0100 Subject: [PATCH 46/53] Rebuilt for varnish-7.7.3-2, rhbz#2407456 --- varnish-modules.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/varnish-modules.spec b/varnish-modules.spec index 9c6551e..52419bf 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -10,7 +10,7 @@ Name: varnish-modules Version: 0.26.0 -Release: 4%{?dist} +Release: 5%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL License: BSD-2-Clause @@ -81,6 +81,9 @@ sed -i 's,tests/xkey/test12.vtc,,' src/Makefile %changelog +* Wed Nov 19 2025 Ingvar Hagelund - 0.26.0-5 +- Rebuilt for varnish-7.7.3-2, rhbz#2407456 + * Mon Sep 15 2025 Ingvar Hagelund - 0.26.0-4 - Rebuilt for varnish-7.7.3 From a460dffebcfc14b047e27f74c0db995b9b75642f Mon Sep 17 00:00:00 2001 From: Ingvar Hagelund Date: Mon, 5 Jan 2026 18:49:59 +0100 Subject: [PATCH 47/53] New upstream release varnish-modules-0.27.0 --- .gitignore | 1 + sources | 2 +- varnish-modules.spec | 7 +++++-- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index effc3ae..77f13a4 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ /varnish-modules-0.24.0.tar.gz /varnish-modules-0.25.0.tar.gz /varnish-modules-0.26.0.tar.gz +/varnish-modules-0.27.0.tar.gz diff --git a/sources b/sources index a07daaa..a446885 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (varnish-modules-0.26.0.tar.gz) = 2050ec65ae731bddc74743c9aa6246e41ffba8017c404c32e50d45f72f5a02dd3eb2290f8b8e43e25a385a06819836fb19f8540f1cdae394083729ff6b6aed35 +SHA512 (varnish-modules-0.27.0.tar.gz) = bb8a55b3d665fe6de918f784a6f4276b2053f5b1cd0628d6b6c6c78c0042fd678736a2f48375cf356daa47a987175f52569c0b468ccd2b37ab55a32c25255264 diff --git a/varnish-modules.spec b/varnish-modules.spec index 52419bf..de239b5 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -9,8 +9,8 @@ %endif Name: varnish-modules -Version: 0.26.0 -Release: 5%{?dist} +Version: 0.27.0 +Release: 1%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL License: BSD-2-Clause @@ -81,6 +81,9 @@ sed -i 's,tests/xkey/test12.vtc,,' src/Makefile %changelog +* Mon Jan 05 2026 Ingvar Hagelund - 0.27.0-1 +- New upstream release varnish-modules-0.27.0 + * Wed Nov 19 2025 Ingvar Hagelund - 0.26.0-5 - Rebuilt for varnish-7.7.3-2, rhbz#2407456 From f606762777d5761886f48dc2aded59918eb6ba0a Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 17 Jan 2026 19:47:40 +0000 Subject: [PATCH 48/53] Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild --- varnish-modules.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/varnish-modules.spec b/varnish-modules.spec index de239b5..e554698 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -10,7 +10,7 @@ Name: varnish-modules Version: 0.27.0 -Release: 1%{?dist} +Release: 2%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL License: BSD-2-Clause @@ -81,6 +81,9 @@ sed -i 's,tests/xkey/test12.vtc,,' src/Makefile %changelog +* Sat Jan 17 2026 Fedora Release Engineering - 0.27.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild + * Mon Jan 05 2026 Ingvar Hagelund - 0.27.0-1 - New upstream release varnish-modules-0.27.0 From d58a4cf02b267ed382c7a3865bcabe90c859c846 Mon Sep 17 00:00:00 2001 From: Ingvar Hagelund Date: Sun, 12 Apr 2026 15:48:48 -0400 Subject: [PATCH 49/53] New upstream release varnish-modules-0.28.0, built for varnish-9.0.0 --- .gitignore | 1 + sources | 2 +- varnish-modules.spec | 7 +++++-- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 77f13a4..c3b9d49 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ /varnish-modules-0.25.0.tar.gz /varnish-modules-0.26.0.tar.gz /varnish-modules-0.27.0.tar.gz +/varnish-modules-0.28.0.tar.gz diff --git a/sources b/sources index a446885..f25bbdd 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (varnish-modules-0.27.0.tar.gz) = bb8a55b3d665fe6de918f784a6f4276b2053f5b1cd0628d6b6c6c78c0042fd678736a2f48375cf356daa47a987175f52569c0b468ccd2b37ab55a32c25255264 +SHA512 (varnish-modules-0.28.0.tar.gz) = 796f95ea6f8b69f6e4fb3daf327c4a6cccc9b6c927d8daace753aad7e443c1f937020465924e472ad65bb0a10e2e5bf85b6228afe3257dbfba0091750fbf300a diff --git a/varnish-modules.spec b/varnish-modules.spec index e554698..196fecf 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -9,8 +9,8 @@ %endif Name: varnish-modules -Version: 0.27.0 -Release: 2%{?dist} +Version: 0.28.0 +Release: 1%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL License: BSD-2-Clause @@ -81,6 +81,9 @@ sed -i 's,tests/xkey/test12.vtc,,' src/Makefile %changelog +* Mon Apr 13 2026 Ingvar Hagelund - 0.28.0-1 +- New upstream release varnish-modules-0.28.0, built for varnish-9.0.0 + * Sat Jan 17 2026 Fedora Release Engineering - 0.27.0-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild From e41ead8384d321c8f17ddd08bf52fc3c14fc53c8 Mon Sep 17 00:00:00 2001 From: Ingvar Hagelund Date: Thu, 30 Apr 2026 15:16:17 +0200 Subject: [PATCH 50/53] Built for varnish-9.0.1 --- varnish-modules.spec | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/varnish-modules.spec b/varnish-modules.spec index 196fecf..16c4a8e 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -1,16 +1,11 @@ %global varnishver %(pkg-config --silence-errors --modversion varnishapi || echo 0) -%if 0%{?rhel} == 7 -%global docutils python34-docutils -%global rst2man rst2man-3.4 -%else %global docutils python3-docutils %global rst2man rst2man -%endif Name: varnish-modules Version: 0.28.0 -Release: 1%{?dist} +Release: 2%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL License: BSD-2-Clause @@ -81,6 +76,9 @@ sed -i 's,tests/xkey/test12.vtc,,' src/Makefile %changelog +* Thu Apr 30 2026 Ingvar Hagelund - 0.28.0-2 +- Built for varnish-9.0.1 + * Mon Apr 13 2026 Ingvar Hagelund - 0.28.0-1 - New upstream release varnish-modules-0.28.0, built for varnish-9.0.0 From cd03cfd35eefcceda8dafe5b740a530881e6ea45 Mon Sep 17 00:00:00 2001 From: Ingvar Hagelund Date: Thu, 21 May 2026 13:15:42 +0200 Subject: [PATCH 51/53] Built for varnish-9.0.2 --- varnish-modules.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/varnish-modules.spec b/varnish-modules.spec index 16c4a8e..3a878f6 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -5,7 +5,7 @@ Name: varnish-modules Version: 0.28.0 -Release: 2%{?dist} +Release: 3%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL License: BSD-2-Clause @@ -76,6 +76,9 @@ sed -i 's,tests/xkey/test12.vtc,,' src/Makefile %changelog +* Fri May 15 2026 Ingvar Hagelund - 0.28.0-3 +- Built for varnish-9.0.2 + * Thu Apr 30 2026 Ingvar Hagelund - 0.28.0-2 - Built for varnish-9.0.1 From 8ffd4aa838f12915d0a479a14395893e33d46afe Mon Sep 17 00:00:00 2001 From: Ingvar Hagelund Date: Thu, 21 May 2026 14:16:27 +0200 Subject: [PATCH 52/53] Built for varnish-9.0.3 --- varnish-modules.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/varnish-modules.spec b/varnish-modules.spec index 3a878f6..171f7e8 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -5,7 +5,7 @@ Name: varnish-modules Version: 0.28.0 -Release: 3%{?dist} +Release: 4%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL License: BSD-2-Clause @@ -76,6 +76,9 @@ sed -i 's,tests/xkey/test12.vtc,,' src/Makefile %changelog +* Thu May 21 2026 Ingvar Hagelund - 0.28.0-4 +- Built for varnish-9.0.3 + * Fri May 15 2026 Ingvar Hagelund - 0.28.0-3 - Built for varnish-9.0.2 From 7ff3142dec72baeb8a4ed0e03a74e897f5311a2c Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 17 Jul 2026 08:22:28 +0000 Subject: [PATCH 53/53] Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild --- varnish-modules.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/varnish-modules.spec b/varnish-modules.spec index 171f7e8..1c05255 100644 --- a/varnish-modules.spec +++ b/varnish-modules.spec @@ -5,7 +5,7 @@ Name: varnish-modules Version: 0.28.0 -Release: 4%{?dist} +Release: 5%{?dist} Summary: A collection of modules ("vmods") extending Varnish VCL License: BSD-2-Clause @@ -76,6 +76,9 @@ sed -i 's,tests/xkey/test12.vtc,,' src/Makefile %changelog +* Fri Jul 17 2026 Fedora Release Engineering - 0.28.0-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild + * Thu May 21 2026 Ingvar Hagelund - 0.28.0-4 - Built for varnish-9.0.3