MINOR: task: always preinitialize the task's timeout in task_init()

task_init() is called exclusively by task_new() which is the only way
to create a task. Most callers set t->expire to TICK_ETERNITY, some set
it to another value and a few like Lua don't set it at all as they don't
need a timeout, causing random values to be used in case the task gets
queued.

Let's always set t->expire to TICK_ETERNITY in task_init() so that all
tasks are now initialized in a clean state.

This patch can be backported as it will definitely make the code more
robust (at least the Lua code, possibly other places).
This commit is contained in:
Willy Tarreau 2017-07-24 17:52:58 +02:00
parent bd7fc95edb
commit f42199975c

View File

@ -184,6 +184,7 @@ static inline struct task *task_init(struct task *t)
t->pending_state = t->state = TASK_SLEEPING;
t->nice = 0;
t->calls = 0;
t->expire = TICK_ETERNITY;
return t;
}