[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