From: Willy Tarreau Date: Mon, 28 Sep 2015 14:39:25 +0000 (+0200) Subject: MEDIUM: init: completely deallocate unused peers X-Git-Tag: v1.6-dev6~8 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=47c8c029db;p=thirdparty%2Fhaproxy.git 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. --- diff --git a/src/haproxy.c b/src/haproxy.c index 1226932486..ebc7177140 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; }