From: Russell Bryant Date: Tue, 10 Aug 2010 18:04:32 +0000 (+0000) Subject: Don't move the time threshold for running scheduled events on every iteration. X-Git-Tag: 1.6.2.12-rc1~21 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ee39dde50e515259674bf7f9e72ad96be9117a12;p=thirdparty%2Fasterisk.git Don't move the time threshold for running scheduled events on every iteration. Instead, only calculate the time threshold each time ast_sched_runq() is called. (closes issue #17742) Reported by: schmidts Patches: sched.c.patch uploaded by schmidts (license 1077) git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.2@281574 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/main/sched.c b/main/sched.c index 8699cfbabc..0aebb43f1c 100644 --- a/main/sched.c +++ b/main/sched.c @@ -589,13 +589,13 @@ int ast_sched_runq(struct sched_context *con) ast_mutex_lock(&con->lock); + when = ast_tvadd(ast_tvnow(), ast_tv(0, 1000)); for (numevents = 0; (current = ast_heap_peek(con->sched_heap, 1)); numevents++) { /* schedule all events which are going to expire within 1ms. * We only care about millisecond accuracy anyway, so this will * help us get more than one event at one time if they are very * close together. */ - when = ast_tvadd(ast_tvnow(), ast_tv(0, 1000)); if (ast_tvcmp(current->when, when) != -1) { break; }