[master] ee5b6458f VRT_new_backend_clustered: swap success and error handling

Nils Goroll nils.goroll at uplex.de
Thu Jun 28 14:24:08 UTC 2018


commit ee5b6458f04d977e9489f5142c0f36a78d0e2e63
Author: Nils Goroll <nils.goroll at uplex.de>
Date:   Thu Jun 28 16:16:53 2018 +0200

    VRT_new_backend_clustered: swap success and error handling
    
    ... to make the next commit more readable

diff --git a/bin/varnishd/cache/cache_backend.c b/bin/varnishd/cache/cache_backend.c
index f50928cb2..c56081332 100644
--- a/bin/varnishd/cache/cache_backend.c
+++ b/bin/varnishd/cache/cache_backend.c
@@ -527,33 +527,32 @@ VRT_new_backend_clustered(VRT_CTX, struct vsmw_cluster *vc,
 
 	be->director = VRT_AddDirector(ctx, vbe_methods, be,
 	    "%s", vrt->vcl_name);
-	if (be->director == NULL) {
-		VSC_vbe_Destroy(&be->vsc_seg);
+	if (be->director != NULL) {
+		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,
+				       vrt->path, vbe_proto_ident);
+		Lck_Unlock(&backends_mtx);
+
+		if (vbp != NULL)
+			VBP_Insert(be, vbp, be->tcp_pool);
+
+		return (be->director);
+	}
+	VSC_vbe_Destroy(&be->vsc_seg);
 #define DA(x)	do { if (be->x != NULL) free(be->x); } while (0)
 #define DN(x)	/**/
 	VRT_BACKEND_HANDLE();
 #undef DA
 #undef DN
-		Lck_Delete(&be->mtx);
-		FREE_OBJ(be);
-		return (NULL);
-	}
-
-	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,
-	    vrt->path, vbe_proto_ident);
-	Lck_Unlock(&backends_mtx);
-
-	if (vbp != NULL)
-		VBP_Insert(be, vbp, be->tcp_pool);
-
-	return (be->director);
+	Lck_Delete(&be->mtx);
+	FREE_OBJ(be);
+	return (NULL);
 }
 
 VCL_BACKEND v_matchproto_()


More information about the varnish-commit mailing list