]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Scheduler: Fix a nasty scheduler caching bug which makes new tasks not execute
authorJonathan Rose <jrose@digium.com>
Tue, 14 Oct 2014 18:49:25 +0000 (18:49 +0000)
committerJonathan Rose <jrose@digium.com>
Tue, 14 Oct 2014 18:49:25 +0000 (18:49 +0000)
Tasks that were marked for pending deletion in the scheduler would be moved to
the cache for later reuse, but after being recycled the deleted mark wouldn't
be removed resulting in fresh tasks being deleted without reason... and
immediately moved back into the cache where they could be reused again. This
could cause horrendous things to happen in just about anything that used a
scheduler.

ASTERISK-24321 #close
Reported by: Steve Pitts
Review: https://reviewboard.asterisk.org/r/4071/

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@425503 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/sched.c

index 2745e8425a4fc0087a12751313b84ca8649a1a4d..caeb6f8fd80a0b6c6fbc3c1bb323541b0b493b83 100644 (file)
@@ -404,6 +404,7 @@ int ast_sched_add_variable(struct ast_sched_context *con, int when, ast_sched_cb
                tmp->resched = when;
                tmp->variable = variable;
                tmp->when = ast_tv(0, 0);
+               tmp->deleted = 0;
                if (sched_settime(&tmp->when, when)) {
                        sched_release(con, tmp);
                } else {