Use release and destroy callbacks

parent 9daa571b
......@@ -107,11 +107,39 @@ vmod_director_healthy(VRT_CTX, VCL_BACKEND b, VCL_TIME *t)
return (r);
}
static void v_matchproto_(vdi_release_f)
vmod_director_release(VCL_BACKEND dir)
{
struct vmod_all_healthy_director *d;
int i;
CHECK_OBJ_NOTNULL(dir, DIRECTOR_MAGIC);
CAST_OBJ_NOTNULL(d, dir->priv, VMOD_ALL_HEALTHY_DIRECTOR_MAGIC);
for (i = 0; i < d->nconsider; i++)
VRT_Assign_Backend(&d->consider[i], NULL);
VRT_Assign_Backend(&d->backend, NULL);
}
static void v_matchproto_(vdi_destroy_f)
vmod_director_destroy(VCL_BACKEND dir)
{
struct vmod_all_healthy_director *d;
CHECK_OBJ_NOTNULL(dir, DIRECTOR_MAGIC);
CAST_OBJ_NOTNULL(d, dir->priv, VMOD_ALL_HEALTHY_DIRECTOR_MAGIC);
free(TRUST_ME(d->consider));
FREE_OBJ(d);
}
static const struct vdi_methods vmod_director_methods[1] = {{
.magic = VDI_METHODS_MAGIC,
.type = "all_healthy",
.healthy = vmod_director_healthy,
.resolve = vmod_director_resolve,
.release = vmod_director_release,
.destroy = vmod_director_destroy,
}};
VCL_VOID
......@@ -159,12 +187,7 @@ vmod_director__fini(struct vmod_all_healthy_director **dp)
if (d == NULL)
return;
CHECK_OBJ(d, VMOD_ALL_HEALTHY_DIRECTOR_MAGIC);
for (i = 0; i < d->nconsider; i++)
VRT_Assign_Backend(&d->consider[i], NULL);
VRT_Assign_Backend(&d->backend, NULL);
VRT_DelDirector(&d->dir);
free(TRUST_ME(d->consider));
FREE_OBJ(d);
}
#define check_init(ctx, name) do { \
......
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