[master] 93112f3 Isolate more knowledge about the internals of a VCL in cache_vcl.c

Poul-Henning Kamp phk at FreeBSD.org
Wed Jun 17 11:39:04 CEST 2015


commit 93112f34d060afbb290541c699c2cd86214d8708
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date:   Wed Jun 17 08:44:18 2015 +0000

    Isolate more knowledge about the internals of a VCL in cache_vcl.c

diff --git a/bin/varnishd/cache/cache.h b/bin/varnishd/cache/cache.h
index 3492ae5..042e176 100644
--- a/bin/varnishd/cache/cache.h
+++ b/bin/varnishd/cache/cache.h
@@ -1071,6 +1071,7 @@ void VCL_Refresh(struct VCL_conf **vcc);
 void VCL_Ref(struct VCL_conf *vcc);
 void VCL_Rel(struct VCL_conf **vcc);
 void VCL_Poll(void);
+struct director *VCL_DefaultDirector(const struct VCL_conf *);
 const char *VCL_Return_Name(unsigned);
 const char *VCL_Method_Name(unsigned);
 
diff --git a/bin/varnishd/cache/cache_req_fsm.c b/bin/varnishd/cache/cache_req_fsm.c
index c4d3ab4..5ce8309 100644
--- a/bin/varnishd/cache/cache_req_fsm.c
+++ b/bin/varnishd/cache/cache_req_fsm.c
@@ -107,7 +107,7 @@ cnt_deliver(struct worker *wrk, struct req *req)
 	CHECK_OBJ_NOTNULL(req, REQ_MAGIC);
 	CHECK_OBJ_NOTNULL(req->objcore, OBJCORE_MAGIC);
 	CHECK_OBJ_NOTNULL(req->objcore->objhead, OBJHEAD_MAGIC);
-	CHECK_OBJ_NOTNULL(req->vcl, VCL_CONF_MAGIC);
+	AN(req->vcl);
 
 	assert(req->objcore->refcnt > 0);
 
@@ -337,7 +337,7 @@ cnt_lookup(struct worker *wrk, struct req *req)
 	CHECK_OBJ_NOTNULL(req, REQ_MAGIC);
 	AZ(req->objcore);
 
-	CHECK_OBJ_NOTNULL(req->vcl, VCL_CONF_MAGIC);
+	AN(req->vcl);
 
 	VRY_Prep(req);
 
@@ -469,7 +469,7 @@ cnt_miss(struct worker *wrk, struct req *req)
 
 	CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
 	CHECK_OBJ_NOTNULL(req, REQ_MAGIC);
-	CHECK_OBJ_NOTNULL(req->vcl, VCL_CONF_MAGIC);
+	AN(req->vcl);
 	CHECK_OBJ_NOTNULL(req->objcore, OBJCORE_MAGIC);
 
 	VCL_miss_method(req->vcl, wrk, req, NULL, NULL);
@@ -510,7 +510,7 @@ cnt_pass(struct worker *wrk, struct req *req)
 
 	CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
 	CHECK_OBJ_NOTNULL(req, REQ_MAGIC);
-	CHECK_OBJ_NOTNULL(req->vcl, VCL_CONF_MAGIC);
+	AN(req->vcl);
 	AZ(req->objcore);
 
 	VCL_pass_method(req->vcl, wrk, req, NULL, NULL);
@@ -545,7 +545,7 @@ cnt_pipe(struct worker *wrk, struct req *req)
 
 	CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
 	CHECK_OBJ_NOTNULL(req, REQ_MAGIC);
-	CHECK_OBJ_NOTNULL(req->vcl, VCL_CONF_MAGIC);
+	AN(req->vcl);
 
 	wrk->stats->s_pipe++;
 	bo = VBO_GetBusyObj(wrk, req);
@@ -618,7 +618,7 @@ cnt_recv(struct worker *wrk, struct req *req)
 
 	CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
 	CHECK_OBJ_NOTNULL(req, REQ_MAGIC);
-	CHECK_OBJ_NOTNULL(req->vcl, VCL_CONF_MAGIC);
+	AN(req->vcl);
 	AZ(req->objcore);
 	AZ(req->err_code);
 
@@ -649,7 +649,7 @@ cnt_recv(struct worker *wrk, struct req *req)
 
 	/* By default we use the first backend */
 	AZ(req->director_hint);
-	req->director_hint = *req->vcl->default_director;
+	req->director_hint = VCL_DefaultDirector(req->vcl);
 	AN(req->director_hint);
 
 	req->d_ttl = -1;
@@ -735,7 +735,7 @@ cnt_purge(struct worker *wrk, struct req *req)
 	CHECK_OBJ_NOTNULL(req, REQ_MAGIC);
 	AZ(req->objcore);
 
-	CHECK_OBJ_NOTNULL(req->vcl, VCL_CONF_MAGIC);
+	AN(req->vcl);
 
 	VRY_Prep(req);
 
diff --git a/bin/varnishd/cache/cache_vcl.c b/bin/varnishd/cache/cache_vcl.c
index db5aa2d..e45f186 100644
--- a/bin/varnishd/cache/cache_vcl.c
+++ b/bin/varnishd/cache/cache_vcl.c
@@ -245,6 +245,16 @@ VCL_TestLoad(const char *fn)
 
 /*--------------------------------------------------------------------*/
 
+struct director *
+VCL_DefaultDirector(const struct VCL_conf *vcc)
+{
+
+	AN(vcc);
+	return (*vcc->default_director);
+}
+
+/*--------------------------------------------------------------------*/
+
 static struct vcl *
 vcl_find(const char *name)
 {



More information about the varnish-commit mailing list