[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