BUG/MEDIUM: check: fix leak on agent-check purge

There is currently a leak on agent-check for dynamic servers. When
deleted, the check rules and vars are not liberated. This leak grows
each time a dynamic server with agent-check is deleted.

Replace the manual purge code by a free_check invocation which
centralizes all the details on check cleaning.

There is no leak for health check because in this case the proxy is the
owner of the check vars and rules.

This should not be backported, unless dynamic server checks are
backported.
This commit is contained in:
Amaury Denoyelle 2021-08-10 16:23:49 +02:00
parent 6d7fc446b4
commit 26cb8342ad

View File

@ -1245,16 +1245,11 @@ struct task *process_chk_conn(struct task *t, void *context, unsigned int state)
* after this point.
*/
if (unlikely(check->state & CHK_ST_PURGE)) {
/* buf_wait */
LIST_DELETE(&check->buf_wait.list);
/* tasklet */
pool_free(pool_head_tasklet, check->wait_list.tasklet);
/* task */
task_destroy(check->task);
t = NULL;
free_check(check);
if (check->server)
free_server(check->server);
t = NULL;
}
return t;