[master] 1113031 Shuffle code from backend to director level

Poul-Henning Kamp phk at FreeBSD.org
Thu Apr 26 21:18:12 UTC 2018


commit 1113031f9cc5a6c65af8924dbd7ab72f23bdd872
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date:   Thu Apr 26 21:16:46 2018 +0000

    Shuffle code from backend to director level

diff --git a/bin/varnishd/cache/cache_backend.c b/bin/varnishd/cache/cache_backend.c
index 21258a8..1171c27 100644
--- a/bin/varnishd/cache/cache_backend.c
+++ b/bin/varnishd/cache/cache_backend.c
@@ -485,12 +485,17 @@ VRT_new_backend_clustered(VRT_CTX, struct vsmw_cluster *vc,
 	d = be->director;
 	INIT_OBJ(d, DIRECTOR_MAGIC);
 	d->priv = be;
-	d->vcl_name = be->vcl_name;
 	d->methods = vbe_methods;
 
-	d->health = 1;
-	d->health_changed = VTIM_real();
-	d->admin_health = VDI_AH_PROBE;
+	be->vsc = VSC_vbe_New(vc, &be->vsc_seg,
+	    "%s.%s", VCL_Name(ctx->vcl), vrt->vcl_name);
+	AN(be->vsc);
+
+	retval = VRT_AddDirector(ctx, d, "%s", vrt->vcl_name);
+	if (retval) {
+		VRT_delete_backend(ctx, &d);
+		return (NULL);
+	}
 
 	vbp = vrt->probe;
 	if (vbp == NULL)
@@ -508,18 +513,7 @@ VRT_new_backend_clustered(VRT_CTX, struct vsmw_cluster *vc,
 		VBP_Insert(be, vbp, be->tcp_pool);
 	}
 
-	be->vsc = VSC_vbe_New(vc, &be->vsc_seg,
-	    "%s.%s", VCL_Name(ctx->vcl), vrt->vcl_name);
-	AN(be->vsc);
-
-	retval = VRT_AddDirector(ctx, d, vrt->vcl_name);
-
-	if (retval == 0)
-		return (d);
-
-	VRT_delete_backend(ctx, &d);
-	AZ(d);
-	return (NULL);
+	return (d);
 }
 
 struct director * v_matchproto_()
diff --git a/bin/varnishd/cache/cache_director.h b/bin/varnishd/cache/cache_director.h
index 00de48e..2918bc1 100644
--- a/bin/varnishd/cache/cache_director.h
+++ b/bin/varnishd/cache/cache_director.h
@@ -98,7 +98,9 @@ struct director {
 
 
 /* cache_vcl.c */
-int VRT_AddDirector(VRT_CTX, struct director *, const char *);
+int VRT_AddDirector(VRT_CTX, struct director *, const char *, ...)
+    v_printflike_(3, 4);
+
 void VRT_DelDirector(VRT_CTX, struct director *);
 
 /* cache_director.c */
diff --git a/bin/varnishd/cache/cache_vcl_vrt.c b/bin/varnishd/cache/cache_vcl_vrt.c
index 0d32de6..6ef4758 100644
--- a/bin/varnishd/cache/cache_vcl_vrt.c
+++ b/bin/varnishd/cache/cache_vcl_vrt.c
@@ -38,6 +38,7 @@
 
 #include "vcl.h"
 #include "vct.h"
+#include "vtim.h"
 
 #include "cache_director.h"
 #include "cache_vcl.h"
@@ -126,11 +127,13 @@ VCL_Rel(struct vcl **vcc)
 /*--------------------------------------------------------------------*/
 
 int
-VRT_AddDirector(VRT_CTX, struct director *d, const char *vcl_name)
+VRT_AddDirector(VRT_CTX, struct director *d, const char *fmt, ...)
 {
 	struct vsb *vsb;
 	struct vcl *vcl;
 	struct vcldir *vdir;
+	va_list ap;
+	int i;
 
 	CHECK_OBJ_NOTNULL(d, DIRECTOR_MAGIC);
 	vcl = ctx->vcl;
@@ -147,16 +150,24 @@ VRT_AddDirector(VRT_CTX, struct director *d, const char *vcl_name)
 	d->admin_health = VDI_AH_PROBE;
 	vsb = VSB_new_auto();
 	AN(vsb);
-	VSB_printf(vsb, "%s.%s", VCL_Name(vcl), vcl_name);
+	VSB_printf(vsb, "%s.", VCL_Name(vcl));
+	i = VSB_len(vsb);
+	va_start(ap, fmt);
+	VSB_vprintf(vsb, fmt, ap);
+	va_end(ap);
 	AZ(VSB_finish(vsb));
 	REPLACE((d->cli_name), VSB_data(vsb));
 	VSB_destroy(&vsb);
+	d->vcl_name = d->cli_name + i;
 
 	ALLOC_OBJ(vdir, VCLDIR_MAGIC);
 	AN(vdir);
 	vdir->dir = d;
 	vdir->vcl = vcl;
 	d->vdir = vdir;
+	d->health = 1;
+	d->admin_health = VDI_AH_PROBE;
+	d->health_changed = VTIM_real();
 
 	Lck_Lock(&vcl_mtx);
 	VTAILQ_INSERT_TAIL(&vcl->director_list, vdir, list);


More information about the varnish-commit mailing list