Merged revisions 140060 via svnmerge from

https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r140060 | russell | 2008-08-26 11:07:58 -0500 (Tue, 26 Aug 2008) | 6 lines

Fix some bogus scheduler usage in chan_sip.  This code used the return value
of a completely unrelated function to determine whether the scheduler should
be run or not.  This would have caused the scheduler to not run in cases where
it should have.  Also, leave a note about another scheduler issue that needs
to be addressed at some point.

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@140061 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Russell Bryant 2008-08-26 16:10:06 +00:00
parent 8953b0f359
commit d787786ac9
1 changed files with 9 additions and 5 deletions

View File

@ -19546,6 +19546,12 @@ static void *do_monitor(void *data)
dialog that was found and destroyed, probably because the list contents would change, dialog that was found and destroyed, probably because the list contents would change,
so we'd need to restart. This isn't the best thing to do with callbacks. */ so we'd need to restart. This isn't the best thing to do with callbacks. */
/* XXX TODO The scheduler usage in this module does not have sufficient
* synchronization being done between running the scheduler and places
* scheduling tasks. As it is written, any scheduled item may not run
* any sooner than about 1 second, regardless of whether a sooner time
* was asked for. */
pthread_testcancel(); pthread_testcancel();
/* Wait for sched or io */ /* Wait for sched or io */
res = ast_sched_wait(sched); res = ast_sched_wait(sched);
@ -19555,11 +19561,9 @@ static void *do_monitor(void *data)
if (res > 20) if (res > 20)
ast_debug(1, "chan_sip: ast_io_wait ran %d all at once\n", res); ast_debug(1, "chan_sip: ast_io_wait ran %d all at once\n", res);
ast_mutex_lock(&monlock); ast_mutex_lock(&monlock);
if (res >= 0) { res = ast_sched_runq(sched);
res = ast_sched_runq(sched); if (res >= 20)
if (res >= 20) ast_debug(1, "chan_sip: ast_sched_runq ran %d all at once\n", res);
ast_debug(1, "chan_sip: ast_sched_runq ran %d all at once\n", res);
}
ast_mutex_unlock(&monlock); ast_mutex_unlock(&monlock);
} }