[asterisk-commits] r105563 - svn:log
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Mon Mar 3 12:18:29 CST 2008
Author: russell
Revision: 105563
Modified property: svn:log
Modified: svn:log at Mon Mar 3 12:18:29 2008
------------------------------------------------------------------------------
--- svn:log (original)
+++ svn:log Mon Mar 3 12:18:29 2008
@@ -1,0 +1,25 @@
+Merge in some changes from team/russell/autoservice-nochans-1.4
+
+These changes fix up some dubious code that I came across while auditing what
+happens in the autoservice thread when there are no channels currently in
+autoservice.
+
+1) Change it so that autoservice thread doesn't keep looping around calling
+ ast_waitfor_n() on 0 channels twice a second. Instead, use a thread condition
+ so that the thread properly goes to sleep and does not wake up until a
+ channel is put into autoservice.
+
+ This actually fixes an interesting bug, as well. If the autoservice thread
+ is already running (almost always is the case), then when the thread goes
+ from having 0 channels to have 1 channel to autoservice, that channel would
+ have to wait for up to 1/2 of a second to have the first frame read from it.
+
+2) Fix up the code in ast_waitfor_nandfds() for when it gets called with no
+ channels and no fds to poll() on, such as was the case with the previous code
+ for the autoservice thread. In this case, the code would call alloca(0), and
+ pass the result as the first argument to poll(). In this case, the 2nd
+ argument to poll() specified that there were no fds, so this invalid pointer
+ shouldn't actually get dereferenced, but, this code makes it explicit and
+ ensures the pointers are NULL unless we have valid data to put there.
+
+(related to issue #12116)
More information about the asterisk-commits
mailing list