Adjust to VDP API changes in Varnish-Cache 7.5

parent 32b2be11
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
Parallel ESI for Varnish-Cache Parallel ESI for Varnish-Cache
============================== ==============================
**THIS BRANCH IS FOR VARNISH-CACHE MASTER >= 7.4 and trunk ONLY** **THIS BRANCH IS FOR VARNISH-CACHE MASTER >= 7.5 and trunk ONLY**
See branches for support of older versions. See branches for support of older versions.
......
AC_PREREQ([2.69]) AC_PREREQ([2.69])
AC_COPYRIGHT([Copyright 2019 - 2021 UPLEX - Nils Goroll Systemoptimierung]) AC_COPYRIGHT([Copyright 2019 - 2025 UPLEX - Nils Goroll Systemoptimierung])
AC_INIT([libvdp-pesi],[trunk],[varnish-support@uplex.de],[vdp-pesi]) AC_INIT([libvdp-pesi],[trunk],[varnish-support@uplex.de],[vdp-pesi])
AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_SRCDIR(src/vdp_pesi.vcc) AC_CONFIG_SRCDIR(src/vdp_pesi.vcc)
...@@ -19,7 +19,7 @@ AC_ARG_WITH([rst2man], ...@@ -19,7 +19,7 @@ AC_ARG_WITH([rst2man],
m4_ifndef([VARNISH_PREREQ], AC_MSG_ERROR([Need varnish.m4 -- see README.rst])) m4_ifndef([VARNISH_PREREQ], AC_MSG_ERROR([Need varnish.m4 -- see README.rst]))
VARNISH_PREREQ([7.4],[trunk]) VARNISH_PREREQ([7.5],[trunk])
VARNISH_VMODS([pesi pesi_debug]) VARNISH_VMODS([pesi pesi_debug])
VARNISH_COUNTERS([pesi]) VARNISH_COUNTERS([pesi])
......
...@@ -139,32 +139,29 @@ const struct vdp vped_pretend_gz = { ...@@ -139,32 +139,29 @@ const struct vdp vped_pretend_gz = {
*/ */
static int v_matchproto_(vdp_fini_f) static int v_matchproto_(vdp_fini_f)
vped_gzgz_init(VRT_CTX, struct vdp_ctx *vdc, void **priv, struct objcore *oc) vped_gzgz_init(VRT_CTX, struct vdp_ctx *vdc, void **priv)
{ {
struct req *req;
ssize_t l; ssize_t l;
const char *p; const char *p;
struct vped_gzgz_priv *foo; struct vped_gzgz_priv *foo;
CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);
CHECK_OBJ_NOTNULL(vdc, VDP_CTX_MAGIC); CHECK_OBJ_NOTNULL(vdc, VDP_CTX_MAGIC);
(void)oc; AN(priv);
req = vdc->req;
CHECK_OBJ_NOTNULL(req, REQ_MAGIC);
CAST_OBJ_NOTNULL(foo, *priv, VPED_GZGZ_PRIV_MAGIC); CAST_OBJ_NOTNULL(foo, *priv, VPED_GZGZ_PRIV_MAGIC);
CHECK_OBJ_NOTNULL(foo->objcore, OBJCORE_MAGIC); CHECK_OBJ_NOTNULL(foo->objcore, OBJCORE_MAGIC);
memset(foo->tailbuf, 0xdd, sizeof foo->tailbuf); memset(foo->tailbuf, 0xdd, sizeof foo->tailbuf);
AN(ObjCheckFlag(req->wrk, foo->objcore, OF_GZIPED)); AN(ObjCheckFlag(vdc->wrk, foo->objcore, OF_GZIPED));
p = ObjGetAttr(req->wrk, foo->objcore, OA_GZIPBITS, &l); p = ObjGetAttr(vdc->wrk, foo->objcore, OA_GZIPBITS, &l);
AN(p); AN(p);
assert(l == 32); assert(l == 32);
foo->start = vbe64dec(p); foo->start = vbe64dec(p);
foo->last = vbe64dec(p + 8); foo->last = vbe64dec(p + 8);
foo->stop = vbe64dec(p + 16); foo->stop = vbe64dec(p + 16);
foo->olen = ObjGetLen(req->wrk, foo->objcore); foo->olen = ObjGetLen(vdc->wrk, foo->objcore);
assert(foo->start > 0 && foo->start < foo->olen * 8); assert(foo->start > 0 && foo->start < foo->olen * 8);
assert(foo->last > 0 && foo->last < foo->olen * 8); assert(foo->last > 0 && foo->last < foo->olen * 8);
assert(foo->stop > 0 && foo->stop < foo->olen * 8); assert(foo->stop > 0 && foo->stop < foo->olen * 8);
......
...@@ -439,17 +439,16 @@ vped_include(struct req *preq, const char *src, const char *host, ...@@ -439,17 +439,16 @@ vped_include(struct req *preq, const char *src, const char *host,
*/ */
static int v_matchproto_(vdp_init_f) static int v_matchproto_(vdp_init_f)
pesi_buf_init(VRT_CTX, struct vdp_ctx *vdc, void **priv, struct objcore *oc) pesi_buf_init(VRT_CTX, struct vdp_ctx *vdc, void **priv)
{ {
struct req *req; struct req *req;
struct pesi *pesi; struct pesi *pesi;
CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);
CHECK_OBJ_NOTNULL(vdc, VDP_CTX_MAGIC); CHECK_OBJ_NOTNULL(vdc, VDP_CTX_MAGIC);
req = vdc->req; req = ctx->req;
CHECK_OBJ_NOTNULL(req, REQ_MAGIC); CHECK_OBJ_NOTNULL(req, REQ_MAGIC);
CAST_OBJ_NOTNULL(pesi, *priv, PESI_MAGIC); CAST_OBJ_NOTNULL(pesi, *priv, PESI_MAGIC);
(void) oc;
assert(WS_Allocated(req->ws, pesi, sizeof *pesi)); assert(WS_Allocated(req->ws, pesi, sizeof *pesi));
node_fill_nodestock(req->ws, &pesi->nodestock); node_fill_nodestock(req->ws, &pesi->nodestock);
...@@ -646,7 +645,7 @@ root_node_new(struct pesi *pesi, struct req *req) ...@@ -646,7 +645,7 @@ root_node_new(struct pesi *pesi, struct req *req)
*/ */
static int v_matchproto_(vdp_init_f) static int v_matchproto_(vdp_init_f)
vdp_pesi_init(VRT_CTX, struct vdp_ctx *vdc, void **priv, struct objcore *oc) vdp_pesi_init(VRT_CTX, struct vdp_ctx *vdc, void **priv)
{ {
struct req *req; struct req *req;
struct pesi *pesi; struct pesi *pesi;
...@@ -654,20 +653,30 @@ vdp_pesi_init(VRT_CTX, struct vdp_ctx *vdc, void **priv, struct objcore *oc) ...@@ -654,20 +653,30 @@ vdp_pesi_init(VRT_CTX, struct vdp_ctx *vdc, void **priv, struct objcore *oc)
struct pesi_tasks *pesi_tasks; struct pesi_tasks *pesi_tasks;
struct node *root_node; struct node *root_node;
CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);
CHECK_OBJ_ORNULL(ctx->req, REQ_MAGIC);
CHECK_OBJ_NOTNULL(vdc, VDP_CTX_MAGIC); CHECK_OBJ_NOTNULL(vdc, VDP_CTX_MAGIC);
CHECK_OBJ_ORNULL(oc, OBJCORE_MAGIC); CHECK_OBJ_ORNULL(vdc->oc, OBJCORE_MAGIC);
if (oc == NULL || !ObjHasAttr(vdc->wrk, oc, OA_ESIDATA)) CHECK_OBJ_NOTNULL(vdc->hp, HTTP_MAGIC);
return (1); AN(vdc->clen);
req = vdc->req;
CHECK_OBJ_NOTNULL(req, REQ_MAGIC);
AN(priv); AN(priv);
AZ(*priv); AZ(*priv);
RFC2616_Weaken_Etag(req->resp); if (vdc->oc == NULL || !ObjHasAttr(vdc->wrk, vdc->oc, OA_ESIDATA))
return (1);
req = ctx->req;
if (req == NULL) {
VSLb(vdc->vsl, SLT_Error,
"esi can only be used on the client side");
return (1);
}
RFC2616_Weaken_Etag(vdc->hp);
req->res_mode |= RES_ESI; req->res_mode |= RES_ESI;
if (req->resp_len != 0) if (*vdc->clen != 0)
req->resp_len = -1; *vdc->clen = -1;
if (req->esi_level > 0) { if (req->esi_level > 0) {
CAST_OBJ_NOTNULL(pesi, req->transport_priv, PESI_MAGIC); CAST_OBJ_NOTNULL(pesi, req->transport_priv, PESI_MAGIC);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment