[master] 9b1bd2de5 gc the vary_l pointer, it serves no purpose
Nils Goroll
nils.goroll at uplex.de
Wed Oct 12 10:00:10 UTC 2022
commit 9b1bd2de520f5088c5885734132fb1d9c33a2ed4
Author: Nils Goroll <nils.goroll at uplex.de>
Date: Wed Oct 12 11:51:52 2022 +0200
gc the vary_l pointer, it serves no purpose
because we run VRY_Validate() anyway before keeping a vary spec,
and rightly so.
Ref #3858
diff --git a/bin/varnishd/cache/cache.h b/bin/varnishd/cache/cache.h
index 57e243fb8..7ad710995 100644
--- a/bin/varnishd/cache/cache.h
+++ b/bin/varnishd/cache/cache.h
@@ -491,9 +491,8 @@ struct req {
/* The busy objhead we sleep on */
struct objhead *hash_objhead;
- /* Built Vary string */
+ /* Built Vary string == workspace reservation */
uint8_t *vary_b;
- uint8_t *vary_l;
uint8_t *vary_e;
uint8_t digest[DIGEST_LEN];
diff --git a/bin/varnishd/cache/cache_panic.c b/bin/varnishd/cache/cache_panic.c
index 8a22fdf48..23a961ed2 100644
--- a/bin/varnishd/cache/cache_panic.c
+++ b/bin/varnishd/cache/cache_panic.c
@@ -479,8 +479,8 @@ pan_req(struct vsb *vsb, const struct req *req)
VSB_printf(vsb, "restarts = %u, esi_level = %u,\n",
req->restarts, req->esi_level);
- VSB_printf(vsb, "vary_b = %p, vary_l = %p, vary_e = %p,\n",
- req->vary_b, req->vary_l, req->vary_e);
+ VSB_printf(vsb, "vary_b = %p, vary_e = %p,\n",
+ req->vary_b, req->vary_e);
VSB_printf(vsb, "d_ttl = %f, d_grace = %f,\n",
req->d_ttl, req->d_grace);
diff --git a/bin/varnishd/cache/cache_vary.c b/bin/varnishd/cache/cache_vary.c
index 943350eac..e650c653e 100644
--- a/bin/varnishd/cache/cache_vary.c
+++ b/bin/varnishd/cache/cache_vary.c
@@ -227,7 +227,6 @@ VRY_Prep(struct req *req)
if (req->hash_objhead == NULL) {
/* Not a waiting list return */
AZ(req->vary_b);
- AZ(req->vary_l);
AZ(req->vary_e);
(void)WS_ReserveAll(req->ws);
} else {
@@ -237,7 +236,6 @@ VRY_Prep(struct req *req)
req->vary_e = req->vary_b + WS_ReservationSize(req->ws);
if (req->vary_b + 2 < req->vary_e)
req->vary_b[2] = '\0';
- req->vary_l = NULL;
}
void
@@ -249,7 +247,6 @@ VRY_Clear(struct req *req)
free(req->vary_b);
req->vary_b = NULL;
AZ(req->vary_e);
- AZ(req->vary_l);
}
/**********************************************************************
@@ -263,7 +260,6 @@ VRY_Finish(struct req *req, enum vry_finish_flag flg)
size_t l;
if (req->vary_b + 2 >= req->vary_e) {
- AZ(req->vary_l);
req->vary_b = NULL;
req->vary_e = NULL;
WS_Release(req->ws, 0);
@@ -272,14 +268,12 @@ VRY_Finish(struct req *req, enum vry_finish_flag flg)
}
l = VRY_Validate(req->vary_b);
- if (flg == KEEP && req->vary_l != NULL) {
- assert(l == req->vary_l - req->vary_b);
+ if (flg == KEEP && l > 3) {
p = malloc(l);
if (p != NULL)
memcpy(p, req->vary_b, l);
}
WS_Release(req->ws, 0);
- req->vary_l = NULL;
req->vary_e = NULL;
req->vary_b = p;
}
@@ -348,7 +342,6 @@ VRY_Match(struct req *req, const uint8_t *vary)
vsp[ln++] = 0xff;
vsp[ln++] = 0;
assert(VRY_Validate(vsp) == ln);
- req->vary_l = vsp + ln;
i = vry_cmp(vary, vsp);
assert(i == 0 || i == 2);
@@ -364,7 +357,6 @@ VRY_Match(struct req *req, const uint8_t *vary)
}
if (oflo) {
vsp = req->vary_b;
- req->vary_l = NULL;
if (vsp + 2 < req->vary_e) {
vsp[0] = 0xff;
vsp[1] = 0xff;
More information about the varnish-commit
mailing list