mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2024-12-12 06:24:56 +00:00
7a9699916a
__task_queue() must absolutely not be called with TICK_ETERNITY or it will place a never-expiring node upfront in the timers queue, preventing any timer from expiring until the process is restarted. Code was found to cause this using "task_schedule(task, now_ms)" which does this one millisecond every 49.7 days, so let's add a condition against this. It must never trigger since any process susceptible to trigger it would already accumulate tasks until it dies. An extra test was added in wake_expired_tasks() to detect tasks whose timeout would have been changed after being queued. An improvement over this could be in the future to use a non-scalar type (union/struct) for expiration dates so as to avoid the risk of using them directly like this. But now_ms is already such a valid time and this specific construct would still not be caught. This could even be backported to stable versions to help detect other occurrences if any. |
||
---|---|---|
.. | ||
haproxy | ||
import |