[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