MEDIUM: peers: unregister peers that were never started

The peers initialization sequence is a bit complex, they're attached
to stick-tables and initialized very early in the boot process. When
we fork, if some must not start, it's too late to find them. Instead,
simply add a guard in their respective tasks to stop them once they
want to start.
This commit is contained in:
Willy Tarreau 2015-05-01 18:32:13 +02:00
parent aa729784e1
commit 46dc1ca761

View File

@ -1204,6 +1204,15 @@ static struct task *process_peer_sync(struct task * task)
task->expire = TICK_ETERNITY;
if (!st->sessions->peer->peers->peers_fe) {
/* this one was never started, kill it */
signal_unregister_handler(st->sighandler);
st->table->sync_task = NULL;
task_delete(st->sync_task);
task_free(st->sync_task);
return NULL;
}
if (!stopping) {
/* Normal case (not soft stop)*/
if (((st->flags & SHTABLE_RESYNC_STATEMASK) == SHTABLE_RESYNC_FROMLOCAL) &&