[master] eaac492 Collapse two source files to one.

Poul-Henning Kamp phk at FreeBSD.org
Tue Nov 14 17:30:08 UTC 2017


commit eaac49272089c0bf1f8ab3ed5a3c1689fe9ce267
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date:   Tue Nov 14 17:29:29 2017 +0000

    Collapse two source files to one.

diff --git a/bin/varnishd/Makefile.am b/bin/varnishd/Makefile.am
index a652cc9..68a7072 100644
--- a/bin/varnishd/Makefile.am
+++ b/bin/varnishd/Makefile.am
@@ -11,7 +11,6 @@ sbin_PROGRAMS = varnishd
 varnishd_SOURCES = \
 	cache/cache_acceptor.c \
 	cache/cache_backend.c \
-	cache/cache_backend_cfg.c \
 	cache/cache_backend_probe.c \
 	cache/cache_ban.c \
 	cache/cache_ban_build.c \
diff --git a/bin/varnishd/cache/cache_backend.c b/bin/varnishd/cache/cache_backend.c
index c1b72f1..31f77e9 100644
--- a/bin/varnishd/cache/cache_backend.c
+++ b/bin/varnishd/cache/cache_backend.c
@@ -48,6 +48,17 @@
 
 #include "VSC_vbe.h"
 
+/*--------------------------------------------------------------------*/
+
+static const char * const vbe_proto_ident = "HTTP Backend";
+
+static VTAILQ_HEAD(, backend) backends = VTAILQ_HEAD_INITIALIZER(backends);
+static VTAILQ_HEAD(, backend) cool_backends =
+    VTAILQ_HEAD_INITIALIZER(cool_backends);
+static struct lock backends_mtx;
+
+/*--------------------------------------------------------------------*/
+
 #define FIND_TMO(tmx, dst, bo, be)					\
 	do {								\
 		CHECK_OBJ_NOTNULL(bo, BUSYOBJ_MAGIC);			\
@@ -335,6 +346,39 @@ vbe_dir_event(const struct director *d, enum vcl_event_e ev)
 	}
 }
 
+/*---------------------------------------------------------------------*/
+
+static void __match_proto__(vdi_destroy_f)
+vbe_destroy(const struct director *d)
+{
+	struct backend *be;
+
+	ASSERT_CLI();
+	CAST_OBJ_NOTNULL(be, d->priv, BACKEND_MAGIC);
+
+	if (be->probe != NULL)
+		VBP_Remove(be);
+
+	Lck_Lock(&backends_mtx);
+	if (be->cooled > 0)
+		VTAILQ_REMOVE(&cool_backends, be, list);
+	else
+		VTAILQ_REMOVE(&backends, be, list);
+	VSC_C_main->n_backend--;
+	VTP_Rel(&be->tcp_pool);
+	Lck_Unlock(&backends_mtx);
+
+#define DA(x)	do { if (be->x != NULL) free(be->x); } while (0)
+#define DN(x)	/**/
+	VRT_BACKEND_HANDLE();
+#undef DA
+#undef DN
+
+	AZ(be->vsc);
+	Lck_Delete(&be->mtx);
+	FREE_OBJ(be);
+}
+
 /*--------------------------------------------------------------------*/
 
 static void
@@ -360,17 +404,40 @@ vbe_panic(const struct director *d, struct vsb *vsb)
 	VSB_printf(vsb, "n_conn = %u,\n", bp->n_conn);
 }
 
-/*--------------------------------------------------------------------*/
+/*--------------------------------------------------------------------
+ * Create a new static or dynamic director::backend instance.
+ */
 
-void
-VBE_fill_director(struct backend *be)
+struct director *
+VRT_new_backend(VRT_CTX, const struct vrt_backend *vrt)
 {
+	struct backend *be;
 	struct director *d;
+	struct vcl *vcl;
+	const struct vrt_backend_probe *vbp;
+	int retval;
+
+	CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);
+	CHECK_OBJ_NOTNULL(vrt, VRT_BACKEND_MAGIC);
+	assert(vrt->ipv4_suckaddr != NULL || vrt->ipv6_suckaddr != NULL);
+
+	vcl = ctx->vcl;
+	AN(vcl);
+	AN(vrt->vcl_name);
 
-	CHECK_OBJ_NOTNULL(be, BACKEND_MAGIC);
+	/* Create new backend */
+	ALLOC_OBJ(be, BACKEND_MAGIC);
+	XXXAN(be);
+	Lck_New(&be->mtx, lck_backend);
+
+#define DA(x)	do { if (vrt->x != NULL) REPLACE((be->x), (vrt->x)); } while (0)
+#define DN(x)	do { be->x = vrt->x; } while (0)
+	VRT_BACKEND_HANDLE();
+#undef DA
+#undef DN
 
-	INIT_OBJ(be->director, DIRECTOR_MAGIC);
 	d = be->director;
+	INIT_OBJ(d, DIRECTOR_MAGIC);
 	d->priv = be;
 	d->name = "backend";
 	d->vcl_name = be->vcl_name;
@@ -380,6 +447,105 @@ VBE_fill_director(struct backend *be)
 	d->getip = vbe_dir_getip;
 	d->finish = vbe_dir_finish;
 	d->event = vbe_dir_event;
-	d->destroy = VBE_Delete;
 	d->panic = vbe_panic;
+	d->destroy = vbe_destroy;
+
+	d->health = 1;
+	d->health_changed = VTIM_real();
+	d->admin_health = VDI_AH_PROBE;
+
+	vbp = vrt->probe;
+	if (vbp == NULL)
+		vbp = VCL_DefaultProbe(vcl);
+
+	Lck_Lock(&backends_mtx);
+	VTAILQ_INSERT_TAIL(&backends, be, list);
+	VSC_C_main->n_backend++;
+	be->tcp_pool = VTP_Ref(vrt->ipv4_suckaddr, vrt->ipv6_suckaddr,
+	    vbe_proto_ident);
+	Lck_Unlock(&backends_mtx);
+
+	if (vbp != NULL) {
+		VTP_AddRef(be->tcp_pool);
+		VBP_Insert(be, vbp, be->tcp_pool);
+	}
+
+	retval = VCL_AddDirector(ctx->vcl, d, vrt->vcl_name);
+
+	if (retval == 0)
+		return (d);
+
+	VRT_delete_backend(ctx, &d);
+	AZ(d);
+	return (NULL);
+}
+
+/*--------------------------------------------------------------------
+ * Delete a dynamic director::backend instance.  Undeleted dynamic and
+ * static instances are GC'ed when the VCL is discarded (in cache_vcl.c)
+ */
+
+void
+VRT_delete_backend(VRT_CTX, struct director **dp)
+{
+	struct director *d;
+	struct backend *be;
+
+	CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);
+	TAKE_OBJ_NOTNULL(d, dp, DIRECTOR_MAGIC);
+	CAST_OBJ_NOTNULL(be, d->priv, BACKEND_MAGIC);
+	Lck_Lock(&be->mtx);
+	be->director->admin_health = VDI_AH_DELETED;
+	be->director->health_changed = VTIM_real();
+	be->cooled = VTIM_real() + 60.;
+	Lck_Unlock(&be->mtx);
+	Lck_Lock(&backends_mtx);
+	VTAILQ_REMOVE(&backends, be, list);
+	VTAILQ_INSERT_TAIL(&cool_backends, be, list);
+	Lck_Unlock(&backends_mtx);
+
+	// NB. The backend is still usable for the ongoing transactions,
+	// this is why we don't bust the director's magic number.
+}
+
+void
+VBE_SetHappy(const struct backend *be, uint64_t happy)
+{
+
+	Lck_Lock(&backends_mtx);
+	if (be->vsc != NULL)
+		be->vsc->happy = happy;
+	Lck_Unlock(&backends_mtx);
+}
+
+/*---------------------------------------------------------------------*/
+
+void
+VBE_Poll(void)
+{
+	struct backend *be, *be2;
+	double now = VTIM_real();
+
+	ASSERT_CLI();
+	Lck_Lock(&backends_mtx);
+	VTAILQ_FOREACH_SAFE(be, &cool_backends, list, be2) {
+		CHECK_OBJ_NOTNULL(be, BACKEND_MAGIC);
+		if (be->cooled > now)
+			break;
+		if (be->n_conn > 0)
+			continue;
+		Lck_Unlock(&backends_mtx);
+		VCL_DelDirector(be->director);
+		Lck_Lock(&backends_mtx);
+	}
+	Lck_Unlock(&backends_mtx);
+}
+
+/*---------------------------------------------------------------------*/
+
+void
+VBE_InitCfg(void)
+{
+
+	Lck_New(&backends_mtx, lck_vbe);
 }
diff --git a/bin/varnishd/cache/cache_backend.h b/bin/varnishd/cache/cache_backend.h
index bea5cd2..ff3cde3 100644
--- a/bin/varnishd/cache/cache_backend.h
+++ b/bin/varnishd/cache/cache_backend.h
@@ -72,12 +72,8 @@ struct backend {
  * Prototypes
  */
 
-/* cache_backend.c */
-void VBE_fill_director(struct backend *be);
-
 /* cache_backend_cfg.c */
 void VBE_SetHappy(const struct backend *, uint64_t);
-void VBE_Delete(const struct director *);
 
 /* cache_backend_probe.c */
 void VBP_Insert(struct backend *b, struct vrt_backend_probe const *p,
diff --git a/bin/varnishd/cache/cache_backend_cfg.c b/bin/varnishd/cache/cache_backend_cfg.c
deleted file mode 100644
index d5e48bf..0000000
--- a/bin/varnishd/cache/cache_backend_cfg.c
+++ /dev/null
@@ -1,224 +0,0 @@
-/*-
- * Copyright (c) 2006 Verdens Gang AS
- * Copyright (c) 2006-2015 Varnish Software AS
- * All rights reserved.
- *
- * Author: Poul-Henning Kamp <phk at phk.freebsd.dk>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * Handle configuration of backends from VCL programs.
- *
- */
-
-#include "config.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "cache_varnishd.h"
-
-#include "vtim.h"
-#include "waiter/waiter.h"
-
-#include "cache_director.h"
-#include "cache_backend.h"
-#include "cache_tcp_pool.h"
-
-#include "VSC_vbe.h"
-
-static const char * const vbe_proto_ident = "HTTP Backend";
-
-static VTAILQ_HEAD(, backend) backends = VTAILQ_HEAD_INITIALIZER(backends);
-static VTAILQ_HEAD(, backend) cool_backends =
-    VTAILQ_HEAD_INITIALIZER(cool_backends);
-static struct lock backends_mtx;
-
-/*--------------------------------------------------------------------
- * Create a new static or dynamic director::backend instance.
- */
-
-struct director *
-VRT_new_backend(VRT_CTX, const struct vrt_backend *vrt)
-{
-	struct backend *b;
-	struct director *d;
-	struct vcl *vcl;
-	const struct vrt_backend_probe *vbp;
-	int retval;
-
-	CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);
-	CHECK_OBJ_NOTNULL(vrt, VRT_BACKEND_MAGIC);
-	assert(vrt->ipv4_suckaddr != NULL || vrt->ipv6_suckaddr != NULL);
-
-	vcl = ctx->vcl;
-	AN(vcl);
-	AN(vrt->vcl_name);
-
-	/* Create new backend */
-	ALLOC_OBJ(b, BACKEND_MAGIC);
-	XXXAN(b);
-	Lck_New(&b->mtx, lck_backend);
-
-#define DA(x)	do { if (vrt->x != NULL) REPLACE((b->x), (vrt->x)); } while (0)
-#define DN(x)	do { b->x = vrt->x; } while (0)
-	VRT_BACKEND_HANDLE();
-#undef DA
-#undef DN
-
-	VBE_fill_director(b);
-
-	b->director->health = 1;
-	b->director->health_changed = VTIM_real();
-	b->director->admin_health = VDI_AH_PROBE;
-
-	vbp = vrt->probe;
-	if (vbp == NULL)
-		vbp = VCL_DefaultProbe(vcl);
-
-	Lck_Lock(&backends_mtx);
-	VTAILQ_INSERT_TAIL(&backends, b, list);
-	VSC_C_main->n_backend++;
-	b->tcp_pool = VTP_Ref(vrt->ipv4_suckaddr, vrt->ipv6_suckaddr,
-	    vbe_proto_ident);
-	Lck_Unlock(&backends_mtx);
-
-	if (vbp != NULL) {
-		VTP_AddRef(b->tcp_pool);
-		VBP_Insert(b, vbp, b->tcp_pool);
-	}
-
-	retval = VCL_AddDirector(ctx->vcl, b->director, vrt->vcl_name);
-
-	if (retval == 0)
-		return (b->director);
-
-	d = b->director;
-	VRT_delete_backend(ctx, &d);
-	AZ(d);
-	return (NULL);
-}
-
-/*--------------------------------------------------------------------
- * Delete a dynamic director::backend instance.  Undeleted dynamic and
- * static instances are GC'ed when the VCL is discarded (in cache_vcl.c)
- */
-
-void
-VRT_delete_backend(VRT_CTX, struct director **dp)
-{
-	struct director *d;
-	struct backend *be;
-
-	CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);
-	TAKE_OBJ_NOTNULL(d, dp, DIRECTOR_MAGIC);
-	CAST_OBJ_NOTNULL(be, d->priv, BACKEND_MAGIC);
-	Lck_Lock(&be->mtx);
-	be->director->admin_health = VDI_AH_DELETED;
-	be->director->health_changed = VTIM_real();
-	be->cooled = VTIM_real() + 60.;
-	Lck_Unlock(&be->mtx);
-	Lck_Lock(&backends_mtx);
-	VTAILQ_REMOVE(&backends, be, list);
-	VTAILQ_INSERT_TAIL(&cool_backends, be, list);
-	Lck_Unlock(&backends_mtx);
-
-	// NB. The backend is still usable for the ongoing transactions,
-	// this is why we don't bust the director's magic number.
-}
-
-void
-VBE_SetHappy(const struct backend *be, uint64_t happy)
-{
-
-	Lck_Lock(&backends_mtx);
-	if (be->vsc != NULL)
-		be->vsc->happy = happy;
-	Lck_Unlock(&backends_mtx);
-}
-
-/*---------------------------------------------------------------------
- * These are for cross-calls with cache_vcl.c only.
- */
-
-void
-VBE_Delete(const struct director *d)
-{
-	struct backend *be;
-
-	ASSERT_CLI();
-	CAST_OBJ_NOTNULL(be, d->priv, BACKEND_MAGIC);
-
-	if (be->probe != NULL)
-		VBP_Remove(be);
-
-	Lck_Lock(&backends_mtx);
-	if (be->cooled > 0)
-		VTAILQ_REMOVE(&cool_backends, be, list);
-	else
-		VTAILQ_REMOVE(&backends, be, list);
-	VSC_C_main->n_backend--;
-	VTP_Rel(&be->tcp_pool);
-	Lck_Unlock(&backends_mtx);
-
-#define DA(x)	do { if (be->x != NULL) free(be->x); } while (0)
-#define DN(x)	/**/
-	VRT_BACKEND_HANDLE();
-#undef DA
-#undef DN
-
-	AZ(be->vsc);
-	Lck_Delete(&be->mtx);
-	FREE_OBJ(be);
-}
-
-/*---------------------------------------------------------------------*/
-
-void
-VBE_Poll(void)
-{
-	struct backend *be, *be2;
-	double now = VTIM_real();
-
-	ASSERT_CLI();
-	Lck_Lock(&backends_mtx);
-	VTAILQ_FOREACH_SAFE(be, &cool_backends, list, be2) {
-		CHECK_OBJ_NOTNULL(be, BACKEND_MAGIC);
-		if (be->cooled > now)
-			break;
-		if (be->n_conn > 0)
-			continue;
-		Lck_Unlock(&backends_mtx);
-		VCL_DelDirector(be->director);
-		Lck_Lock(&backends_mtx);
-	}
-	Lck_Unlock(&backends_mtx);
-}
-
-/*---------------------------------------------------------------------*/
-
-void
-VBE_InitCfg(void)
-{
-
-	Lck_New(&backends_mtx, lck_vbe);
-}


More information about the varnish-commit mailing list