[asterisk-commits] r105564 - svn:log
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Mon Mar 3 12:19:13 CST 2008
Author: russell
Revision: 105564
Modified property: svn:log
Modified: svn:log at Mon Mar 3 12:19:13 2008
------------------------------------------------------------------------------
--- svn:log (original)
+++ svn:log Mon Mar 3 12:19:13 2008
@@ -1,0 +1,39 @@
+3) In addition to merging the changes below, change trunk back to a regular
+ LIST instead of an RWLIST. The way this list works makes it such that
+ a RWLIST provides no additional benefit. Also, a mutex is needed for
+ use with the thread condition.
+
+
+Merged revisions 105563 via svnmerge from
+https://origsvn.digium.com/svn/asterisk/branches/1.4
+
+........
+r105563 | russell | 2008-03-03 09:50:43 -0600 (Mon, 03 Mar 2008) | 24 lines
+
+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