]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: task: always preinitialize the task's timeout in task_init()
authorWilly Tarreau <w@1wt.eu>
Mon, 24 Jul 2017 15:52:58 +0000 (17:52 +0200)
committerWilly Tarreau <w@1wt.eu>
Mon, 24 Jul 2017 15:52:58 +0000 (17:52 +0200)
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).

include/proto/task.h

index e510cd9ec0122e175250bd621e804b67e776454d..82e6f5322bcafa2fd8588f7abc0ab0d532a7a2c9 100644 (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;
 }