From 47c8c029dba5386cc6ee6f49f411053de4e23e36 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Mon, 28 Sep 2015 16:39:25 +0200 Subject: [PATCH] MEDIUM: init: completely deallocate unused peers When peers are stopped due to not being running on the appropriate process, we want to completely release them and unregister their signals and task in order to ensure there's no way they may be called in the future. Note: ideally we should have a list of all tables attached to a peers section being disabled in order to unregister them and void their sync_task. It doesn't appear to be *that* easy for now. --- src/haproxy.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/haproxy.c b/src/haproxy.c index 122693248..ebc717714 100644 --- a/src/haproxy.c +++ b/src/haproxy.c @@ -1858,6 +1858,12 @@ int main(int argc, char **argv) stop_proxy(curpeers->peers_fe); /* disable this peer section so that it kills itself */ + signal_unregister_handler(curpeers->sighandler); + task_delete(curpeers->sync_task); + task_free(curpeers->sync_task); + curpeers->sync_task = NULL; + task_free(curpeers->peers_fe->task); + curpeers->peers_fe->task = NULL; curpeers->peers_fe = NULL; }