Thu Jul 12 09:23:04 CDT 2007
* include/asterisk/dlinkedlists.h (added), 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.
On Thu, Apr 24, 2008 at 6:51 AM, Mike Clark <mike at infoanywhere.com> wrote:
> I upgraded one of our servers to 188.8.131.52 last evening, but ended up
> having to drop back because of IAX calls failing at a near 50 % rate.
> Here is the message that we would receive on the console (multiple
> times), and then it would hangup the call.
> Avoiding IAX destroy deadlock
> Anyone else having similar problems?
> Mike Clark
> -- Bandwidth and Colocation Provided by http://www.api-digital.com --
> asterisk-users mailing list
> To UNSUBSCRIBE or update options visit:
More information about the asterisk-users