<div class="gmail_quote">On Wed, Mar 3, 2010 at 7:50 AM, Jared Smith <span dir="ltr">&lt;<a href="mailto:jsmith@digium.com">jsmith@digium.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
On Tue, 2010-03-02 at 21:18 -0600, Tim Ringenbach wrote:<br>
<br>
<div class="im">
&gt; 1. I&#39;ve heard the complaint that IAX2 suffers on the performance front<br>
&gt; because of it&#39;s use of a single port for singling and audio.<br>
<br>
</div>Changing the IAX protocol to use different ports for signaling and audio<br>
would break one of the fundamental advantages of the IAX protocol, in<br>
that it does a much better job of traversing NAT firewalls because of<br>
this design.  I&#39;m not saying the performance can&#39;t be improved, I&#39;m just<br>
saying that splitting the media out to a different port probably isn&#39;t<br>
the best way.<br></blockquote><div><br>You don&#39;t have to break the great NAT transversal to implement that though. You could start out with one part and negotiate switching the media to a second one. Media flows on the signaling port until you handshake on the media port, and if you never succeed, then nothing different happens.<br>
<br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="im"><br>
&gt; 2. Eliminate channel masquerades and come up with some better way to<br>
&gt; handle the need for them.<br>
<br>
</div>There&#39;s a new bridging API in Asterisk 1.6.2 and later which already<br>
addresses this concern.  There&#39;s still a lot of work to be done to start<br>
moving apps over to the new API, but from what (little) I understand,<br>
the hardest part has already been done.<br></blockquote><div><br>Cool, I wasn&#39;t aware of that. I heard something about a new bridging API but I didn&#39;t understand it&#39;s purpose. <br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

<div class="im"><br>
&gt; 3. Run a tool like helgrind or ThreadSanitizer on asterisk and fix all<br>
&gt; the errors, add unit tests so they don&#39;t come back, etc. Some of those<br>
&gt; tools need annotations in the source to flag false positives, so add<br>
&gt; those too.<br>
<br>
</div>There are a lot of tools we *could* run against Asterisk... in my own<br>
spare time last last fall I experimented with the clang analyzer<br>
utility.  While it pointed out a fair number of places where we could<br>
improve the code, it also pointed out a lot of false positives, and so<br>
we have to weigh the benefits of taking a developer&#39;s time to analyze<br>
each one vs. the other things they could be doing.<br>
<br>
Unfortunately, I don&#39;t think that a student would be in the best<br>
position to know which of the items are serious concerns and which are<br>
false positives, as it takes a pretty robust understanding of the<br>
Asterisk code.  Maybe there is some low hanging fruit that can be done<br>
by a student over the summer, and he can highlight places that require<br>
more in-depth analysis by an experienced developer?<br>
<font color="#888888"><br>
</font></blockquote></div><br>That&#39;s a good point.<br>