[asterisk-commits] russell: tag 1.4.19.2 r115632 - in /tags/1.4.19.2: .version ChangeLog

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Mon May 12 10:03:35 CDT 2008


Author: russell
Date: Mon May 12 10:03:35 2008
New Revision: 115632

URL: http://svn.digium.com/view/asterisk?view=rev&rev=115632
Log:
update .version and ChangeLog

Modified:
    tags/1.4.19.2/.version
    tags/1.4.19.2/ChangeLog

Modified: tags/1.4.19.2/.version
URL: http://svn.digium.com/view/asterisk/tags/1.4.19.2/.version?view=diff&rev=115632&r1=115631&r2=115632
==============================================================================
--- tags/1.4.19.2/.version (original)
+++ tags/1.4.19.2/.version Mon May 12 10:03:35 2008
@@ -1,1 +1,1 @@
-1.4.19.1
+1.4.19.2

Modified: tags/1.4.19.2/ChangeLog
URL: http://svn.digium.com/view/asterisk/tags/1.4.19.2/ChangeLog?view=diff&rev=115632&r1=115631&r2=115632
==============================================================================
--- tags/1.4.19.2/ChangeLog (original)
+++ tags/1.4.19.2/ChangeLog Mon May 12 10:03:35 2008
@@ -1,3 +1,69 @@
+2008-05-12  Russell Bryant <russell at digium.com>
+
+	* Asterisk 1.4.19.2 released.
+
+2008-05-08 19:19 +0000 [r115545-115568]  Russell Bryant <russell at digium.com>
+
+	* /, channels/chan_iax2.c: Merged revisions 115564 via svnmerge
+	  from https://origsvn.digium.com/svn/asterisk/branches/1.2
+	  ........ r115564 | russell | 2008-05-08 14:14:04 -0500 (Thu, 08
+	  May 2008) | 25 lines Fix a race condition that bbryant just found
+	  while doing some IAX2 testing. He was running Asterisk trunk
+	  running IAX2 calls through a few Asterisk boxes, however, the
+	  audio was extremely choppy. We looked at a packet trace and saw a
+	  storm of INVAL and VNAK frames being sent from one box to
+	  another. It turned out that what had happened was that one box
+	  tried to send a CONTROL frame before the 3 way handshake had
+	  completed. So, that frame did not include the destination call
+	  number, because it didn't have it yet. Part of our recent work
+	  for security issues included an additional check to ensure that
+	  frames that are supposed to include the destination call number
+	  have the correct one. This caused the frame to be rejected with
+	  an INVAL. The frame would get retransmitted for forever, rejected
+	  every time ... This race condition exists in all versions that
+	  got the security changes, in theory. However, it is really only
+	  likely that this would cause a problem in Asterisk trunk. There
+	  was a control frame being sent (SRCUPDATE) at the _very_
+	  beginning of the call, which does not exist in 1.2 or 1.4.
+	  However, I am fixing all versions that could potentially be
+	  affected by the introduced race condition. These changes are what
+	  bbryant and I came up with to fix the issue. Instead of simply
+	  dropping control frames that get sent before the handshake is
+	  complete, the code attempts to wait a little while, since in most
+	  cases, the handshake will complete very quickly. If it doesn't
+	  complete after yielding for a little while, then the frame gets
+	  dropped. ........
+
+2008-04-30 16:30 +0000 [r114891]  Russell Bryant <russell at digium.com>
+
+	* channels/chan_iax2.c:
+	  Merge changes from team/russell/iax2_find_callno and
+	  iax2_find_callno_1.4 These changes address a critical performance
+	  issue introduced in the latest release. The fix for the latest
+	  security issue included a change that made Asterisk randomly
+	  choose call numbers to make them more difficult to guess by
+	  attackers. However, due to some inefficient (this is by far, an
+	  understatement) code, when Asterisk chose high call numbers,
+	  chan_iax2 became unusable after just a small number of calls. On
+	  a small embedded platform, it would not be able to handle a
+	  single call. On my Intel Core 2 Duo @ 2.33 GHz, I couldn't run
+	  more than about 16 IAX2 channels. Ouch. These changes address
+	  some performance issues of the find_callno() function that have
+	  bothered me for a very long time. On every incoming media frame,
+	  it iterated through every possible call number trying to find a
+	  matching active call. This involved a mutex lock and unlock for
+	  each call number checked. So, if the random call number chosen
+	  was 20000, then every media frame would cause 20000 locks and
+	  unlocks. Previously, this problem was not as obvious since
+	  Asterisk always chose the lowest call number it could. A second
+	  container for IAX2 pvt structs has been added. It is an astobj2
+	  hash table. When we know the remote side's call number, the pvt
+	  goes into the hash table with a hash value of the remote side's
+	  call number. Then, lookups for incoming media frames are a very
+	  fast hash lookup instead of an absolutely insane array traversal.
+	  In a quick test, I was able to get more than 3600% more IAX2
+	  channels on my machine with these changes.
+
 2008-04-22  Russell Bryant <russell at digium.com>
 
 	* Asterisk 1.4.19.1 released.




More information about the asterisk-commits mailing list