Commit 412460e6 authored by Nils Goroll's avatar Nils Goroll Committed by Dridi Boukelmoune

in vmod destructors, tolerate failed object initializations

works around #2297

Conflicts:
	lib/libvmod_directors/fall_back.c
	lib/libvmod_directors/hash.c
	lib/libvmod_directors/random.c
	lib/libvmod_directors/round_robin.c
parent 2174c403
......@@ -108,9 +108,11 @@ vmod_fallback__fini(struct vmod_directors_fallback **fbp)
{
struct vmod_directors_fallback *fb;
fb = *fbp;
*fbp = NULL;
CHECK_OBJ_NOTNULL(fb, VMOD_DIRECTORS_FALLBACK_MAGIC);
// XXX 2297
if (*fbp == NULL)
return;
TAKE_OBJ_NOTNULL(fb, fbp, VMOD_DIRECTORS_FALLBACK_MAGIC);
vdir_delete(&fb->vd);
FREE_OBJ(fb);
}
......
......@@ -67,9 +67,11 @@ vmod_hash__fini(struct vmod_directors_hash **rrp)
{
struct vmod_directors_hash *rr;
rr = *rrp;
*rrp = NULL;
CHECK_OBJ_NOTNULL(rr, VMOD_DIRECTORS_HASH_MAGIC);
// XXX 2297
if (*rrp == NULL)
return;
TAKE_OBJ_NOTNULL(rr, rrp, VMOD_DIRECTORS_HASH_MAGIC);
vdir_delete(&rr->vd);
FREE_OBJ(rr);
}
......
......@@ -95,9 +95,11 @@ vmod_random__fini(struct vmod_directors_random **rrp)
{
struct vmod_directors_random *rr;
rr = *rrp;
*rrp = NULL;
CHECK_OBJ_NOTNULL(rr, VMOD_DIRECTORS_RANDOM_MAGIC);
// XXX 2297
if (*rrp == NULL)
return;
TAKE_OBJ_NOTNULL(rr, rrp, VMOD_DIRECTORS_RANDOM_MAGIC);
vdir_delete(&rr->vd);
FREE_OBJ(rr);
}
......
......@@ -104,9 +104,11 @@ vmod_round_robin__fini(struct vmod_directors_round_robin **rrp)
{
struct vmod_directors_round_robin *rr;
rr = *rrp;
*rrp = NULL;
CHECK_OBJ_NOTNULL(rr, VMOD_DIRECTORS_ROUND_ROBIN_MAGIC);
// XXX 2297
if (*rrp == NULL)
return;
TAKE_OBJ_NOTNULL(rr, rrp, VMOD_DIRECTORS_ROUND_ROBIN_MAGIC);
vdir_delete(&rr->vd);
FREE_OBJ(rr);
}
......
......@@ -265,6 +265,10 @@ vmod_shard__fini(struct vmod_directors_shard **vshardp)
{
struct vmod_directors_shard *vshard;
// XXX 2297
if (*vshardp == NULL)
return;
TAKE_OBJ_NOTNULL(vshard, vshardp, VMOD_SHARD_SHARD_MAGIC);
sharddir_delete(&vshard->shardd);
free(vshard->dir->vcl_name);
......@@ -795,8 +799,10 @@ vmod_shard_param__fini(struct vmod_directors_shard_param **pp)
{
struct vmod_directors_shard_param *p;
// XXX 2297
if (*pp == NULL)
return;
TAKE_OBJ_NOTNULL(p, pp, VMOD_SHARD_SHARD_PARAM_MAGIC);
FREE_OBJ(p);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment