[asterisk-dev] [Code Review]: Correct the number of available call numbers in IAX2

Sean Bright reviewboard at asterisk.org
Mon Jan 28 12:53:56 CST 2013



> On Jan. 28, 2013, 12:39 p.m., rmudgett wrote:
> > Systems compiled with LOW_MEMORY have similar problems with the 2048 callno value.  The way TRUNK_CALL_START is used in a bit test does not work on the 2048 callno value because the tested bit is not set.
> > 
> > The only reason I can find that IAX_MAX_CALLS needs to be a power of 2 is when defining TRUNK_CALL_START and the use of it in a bit test in make_trunk().  Changing make_trunk() to use a compare operator instead of a bit test should remove all requirements that IAX_MAX_CALLS be a power of two.  It should be recommended that IAX_MAX_CALLS be a power of two for ease of distinguishing normal/trunk calls in IAX traces but not required.
> > 
> > TRUNK_CALL_START should also have insulating parentheses around the definition to avoid unexpected operator precedence issues.
> >

> Systems compiled with LOW_MEMORY have similar problems with the 2048 callno value.  The way TRUNK_CALL_START
> is used in a bit test does not work on the 2048 callno value because the tested bit is not set.

If LOW_MEMORY is defined, IAX_MAX_CALLS will be 2048, TRUNK_CALL_START will be 1024 (0x400).  So other than the parentheses, is any other change needed?


- Sean


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/2293/#review7754
-----------------------------------------------------------


On Jan. 26, 2013, 12:41 p.m., Sean Bright wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviewboard.asterisk.org/r/2293/
> -----------------------------------------------------------
> 
> (Updated Jan. 26, 2013, 12:41 p.m.)
> 
> 
> Review request for Asterisk Developers.
> 
> 
> Summary
> -------
> 
> While populating the list of available call numbers in IAX2 when LOW_MEMORY is not defined, we use every number between 2 and 32768 (inclusive).  32768 is a 16 bit number (a 1 followed by 15 0s).  According to the IAX2 RFC, call numbers are 15 bit values, making 32768 invalid.
> 
> This patch reduces the number of allocated call numbers by 1 so that the are all 15 bits.
> 
> I intend to commit this change to Asterisk versions 1.8, 11, and trunk.
> 
> I have another patch to replace the ao2_container usage for call number selection almost ready for RB as well.
> 
> 
> Diffs
> -----
> 
>   /trunk/channels/chan_iax2.c 380158 
> 
> Diff: https://reviewboard.asterisk.org/r/2293/diff
> 
> 
> Testing
> -------
> 
> Ran thousands of test calls (both trunked and non-trunked) between 3 Asterisk servers.
> 
> 
> Thanks,
> 
> Sean
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20130128/00d89258/attachment-0001.htm>


More information about the asterisk-dev mailing list