<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" version="2.0">
  <channel>
    <title>[Giagnocavo]Michael::Write() - Asterisk</title>
    <link>http://www.atrevido.net/blog/</link>
    <description>Something about .NET.</description>
    <copyright>Michael Giagnocavo</copyright>
    <lastBuildDate>Fri, 08 Jul 2005 16:06:36 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.3.9074.18820</generator>
    <managingEditor>mggUNSPAM@telefinity.com</managingEditor>
    <webMaster>mggUNSPAM@telefinity.com</webMaster>
    <item>
      <trackback:ping>http://www.atrevido.net/blog/Trackback.aspx?guid=f136fa5b-e61f-433e-acf4-28141c547ab8</trackback:ping>
      <pingback:server>http://www.atrevido.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.atrevido.net/blog/PermaLink,guid,f136fa5b-e61f-433e-acf4-28141c547ab8.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://www.atrevido.net/blog/CommentView,guid,f136fa5b-e61f-433e-acf4-28141c547ab8.aspx</wfw:comment>
      <wfw:commentRss>http://www.atrevido.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=f136fa5b-e61f-433e-acf4-28141c547ab8</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I found a cool C# library for use with Asterisk (AGI) and .NET: <a href="http://gundy.org/asterisk/">MONO-TONE</a>.
It looks promising as an easy way to deal with AGI from C#. I think that I'll be extending
it to support FastAGI as well, and contributing the changes back. Nice work <a href="http://gundy.org/">Gabriel</a>!
</p>
        <img width="0" height="0" src="http://www.atrevido.net/blog/aggbug.ashx?id=f136fa5b-e61f-433e-acf4-28141c547ab8" />
      </body>
      <title>Using Asterisk from C#: MONO-TONE</title>
      <guid isPermaLink="false">http://www.atrevido.net/blog/PermaLink,guid,f136fa5b-e61f-433e-acf4-28141c547ab8.aspx</guid>
      <link>http://www.atrevido.net/blog/2005/07/08/Using+Asterisk+From+C+MONOTONE.aspx</link>
      <pubDate>Fri, 08 Jul 2005 16:06:36 GMT</pubDate>
      <description>&lt;p&gt;
I found a cool C# library for use with Asterisk (AGI) and .NET: &lt;a href="http://gundy.org/asterisk/"&gt;MONO-TONE&lt;/a&gt;.
It looks promising as an easy way to deal with AGI from C#. I think that I'll be extending
it to support FastAGI as well, and contributing the changes back. Nice work &lt;a href="http://gundy.org/"&gt;Gabriel&lt;/a&gt;!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.atrevido.net/blog/aggbug.ashx?id=f136fa5b-e61f-433e-acf4-28141c547ab8" /&gt;</description>
      <comments>http://www.atrevido.net/blog/CommentView,guid,f136fa5b-e61f-433e-acf4-28141c547ab8.aspx</comments>
      <category>Asterisk</category>
      <category>Code</category>
    </item>
    <item>
      <trackback:ping>http://www.atrevido.net/blog/Trackback.aspx?guid=65e1bf80-d2a7-42e8-904c-9e758ded0afa</trackback:ping>
      <pingback:server>http://www.atrevido.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.atrevido.net/blog/PermaLink,guid,65e1bf80-d2a7-42e8-904c-9e758ded0afa.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://www.atrevido.net/blog/CommentView,guid,65e1bf80-d2a7-42e8-904c-9e758ded0afa.aspx</wfw:comment>
      <wfw:commentRss>http://www.atrevido.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=65e1bf80-d2a7-42e8-904c-9e758ded0afa</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I'm doing my own realtime support for Asterisk, in an attempt to make it scale. Asterisk
is nice software, but straight out-of-CVS, the performance for high volume (say, over
20,000 clients) sucks. There are also other inconviences with using a file-based store
to determine how to route calls. Mainly, it's inflexible and hard to achieve high-perf
when everything is based on a large .conf file. Not to mention that Asterisk uses
linked lists for everything so looking up any user is an O(N) op (and parsing the
users file is O(N*N) by default!). So, I'm going to put my own logic as a replacement
for some of the critical parts. 
<br /><br />
One of my concerns was performance. Since I'll have multiple Asterisk clusters banging
on my .NET code (via SOAP), I wanted to ensure the whole end-to-end process was fast
enough. 
<br /><br />
I used <a href="http://www.cs.fsu.edu/~engelen/soap.html">gSOAP</a> to create the
C code on Linux. gSOAP is seriously nice. At least an order of magnitude easier to
use than I expected any SOAP library that works on Linux would be.<br /><br />
I created a simple test. I made a database with phone numbers and codecs. The
idea is that when an incoming call comes in, Asterisk will use my code to SOAP over
to my Windows machines, get the data, and then go on its merry way.<br /><br />
My Asterisk machine is a P4 2.4GHz, 512MB RAM (but, I have a Gnome session running
on it). My Windows XP machine (I tested against my desktop) is a P4 3GHz HT, 1.5GB
RAM. I'm running ASP.NET 2 Beta 1 and SQL Server 2000.<br /><br />
The test program consists of a loop (count 5000) that generates a random number, then
uses gSOAP to ask for the codec for that number. Simple, tight.<br /><br />
The results on Linux are particularly impressive. Each instance of the test app
only used a max of 4% processor, and under 1MB of RAM. The bottleneck was definately
inside ASP.NET. To simulate more load from other machines in a cluster, I ran 1, 2,
and 4 instances of the test program. Also note that background tasks on the XP machine
used up about 10% of the CPU.<br /><br />
Results:<br />
 Single process (5000 total requests): <br />
  Total time:                  
18 seconds (0.0036s/request)<br />
  Requests per second:   277<br />
  ASP.NET/IIS CPU:          30%<br />
  SQL Server CPU:           
4%<br /><br />
 Dual process (10,000 total requests):<br />
  Total time:                 
 23 seconds (0.0048s/request)<br />
  Requests per second:   384<br />
  ASP.NET/IIS CPU:          60%<br />
  SQL Server CPU:           
7%<br /><br />
 Quad process (20,000 total requests):<br />
  Total time:                 
 42 seconds (0.0052s/request)<br />
  Requests per second:   476<br />
  ASP.NET/IIS CPU:          80%<br />
  SQL Server CPU:           10%<br /><br />
These results are encouraging enough that I'm not worried of the performance impact
of using SOAP with Asterisk. My target was to have a response in less than 0.1 seconds.
Although, anything under 0.5s would be quite unnoticable to a client. Even in tests
with more threads, my single request response time was always way under 0.1 seconds.<br /><br />
Also, as far as I know, Whidbey Beta 2 (the version I'll go live with) makes
some performance improvements. And also, IIS6 on Windows 2003 is much faster than
IIS5.1 on XP. At any rate, a single proc desktop machine serving 476 RPS? That's pretty
damn good perf if you ask me!
</p>
        <img width="0" height="0" src="http://www.atrevido.net/blog/aggbug.ashx?id=65e1bf80-d2a7-42e8-904c-9e758ded0afa" />
      </body>
      <title>SOAP Performance (gSOAP / ASP.NET)</title>
      <guid isPermaLink="false">http://www.atrevido.net/blog/PermaLink,guid,65e1bf80-d2a7-42e8-904c-9e758ded0afa.aspx</guid>
      <link>http://www.atrevido.net/blog/2005/03/16/SOAP+Performance+GSOAP+ASPNET.aspx</link>
      <pubDate>Wed, 16 Mar 2005 17:06:55 GMT</pubDate>
      <description>&lt;p&gt;
I'm doing my own realtime support for Asterisk, in an attempt to make it scale. Asterisk
is nice software, but straight out-of-CVS, the performance for high volume (say, over
20,000 clients) sucks. There are also other inconviences with using a file-based store
to determine how to route calls. Mainly, it's inflexible and hard to achieve high-perf
when everything is based on a large .conf file. Not to mention that Asterisk uses
linked lists for everything so looking up any user is an O(N) op (and parsing the
users file is O(N*N) by default!). So, I'm going to put my own logic as a replacement
for some of the critical parts. 
&lt;br&gt;
&lt;br&gt;
One of my concerns was performance. Since I'll have multiple Asterisk clusters banging
on my .NET code (via SOAP), I wanted to ensure the whole end-to-end process was fast
enough. 
&lt;br&gt;
&lt;br&gt;
I used &lt;a href="http://www.cs.fsu.edu/~engelen/soap.html"&gt;gSOAP&lt;/a&gt; to create the
C code on Linux. gSOAP is seriously nice. At least an order of magnitude easier to
use than I expected any SOAP library that works on Linux would be.&lt;br&gt;
&lt;br&gt;
I created a simple test. I made a database with phone numbers&amp;nbsp;and codecs. The
idea is that when an incoming call comes in, Asterisk will use my code to SOAP over
to my Windows machines, get the data, and then go on its merry way.&lt;br&gt;
&lt;br&gt;
My Asterisk machine is a P4 2.4GHz, 512MB RAM (but, I have a Gnome session running
on it). My Windows XP machine (I tested against my desktop) is a P4 3GHz HT, 1.5GB
RAM. I'm running ASP.NET 2 Beta 1 and SQL Server 2000.&lt;br&gt;
&lt;br&gt;
The test program consists of a loop (count 5000) that generates a random number, then
uses gSOAP to ask for the codec for that number. Simple, tight.&lt;br&gt;
&lt;br&gt;
The results on Linux are particularly impressive. Each instance of&amp;nbsp;the test app
only used a max of 4% processor, and under 1MB of RAM. The bottleneck was definately
inside ASP.NET. To simulate more load from other machines in a cluster, I ran 1, 2,
and 4 instances of the test program. Also note that background tasks on the XP machine
used up about 10% of the CPU.&lt;br&gt;
&lt;br&gt;
Results:&lt;br&gt;
&amp;nbsp;Single process (5000 total requests):&amp;nbsp;&lt;br&gt;
&amp;nbsp; Total time:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
18 seconds (0.0036s/request)&lt;br&gt;
&amp;nbsp; Requests per second:&amp;nbsp;&amp;nbsp;&amp;nbsp;277&lt;br&gt;
&amp;nbsp; ASP.NET/IIS CPU:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;30%&lt;br&gt;
&amp;nbsp; SQL Server CPU:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;
4%&lt;br&gt;
&lt;br&gt;
&amp;nbsp;Dual process (10,000 total requests):&lt;br&gt;
&amp;nbsp; Total time:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;23 seconds (0.0048s/request)&lt;br&gt;
&amp;nbsp;&amp;nbsp;Requests per second:&amp;nbsp;&amp;nbsp; 384&lt;br&gt;
&amp;nbsp; ASP.NET/IIS CPU:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; 60%&lt;br&gt;
&amp;nbsp; SQL Server CPU:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;
7%&lt;br&gt;
&lt;br&gt;
&amp;nbsp;Quad process (20,000 total requests):&lt;br&gt;
&amp;nbsp; Total time:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;42 seconds (0.0052s/request)&lt;br&gt;
&amp;nbsp; Requests per second:&amp;nbsp;&amp;nbsp; 476&lt;br&gt;
&amp;nbsp; ASP.NET/IIS CPU:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; 80%&lt;br&gt;
&amp;nbsp; SQL Server CPU:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;10%&lt;br&gt;
&lt;br&gt;
These results are encouraging enough that I'm not worried of the performance impact
of using SOAP with Asterisk. My target was to have a response in less than 0.1 seconds.
Although, anything under 0.5s would be quite unnoticable to a client. Even in tests
with more threads, my single request response time was always way under 0.1 seconds.&lt;br&gt;
&lt;br&gt;
Also, as far as I know, Whidbey&amp;nbsp;Beta 2&amp;nbsp;(the version I'll go live with)&amp;nbsp;makes
some performance improvements. And also, IIS6 on Windows 2003 is much faster than
IIS5.1 on XP. At any rate, a single proc desktop machine serving 476 RPS? That's pretty
damn good perf if you ask me!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.atrevido.net/blog/aggbug.ashx?id=65e1bf80-d2a7-42e8-904c-9e758ded0afa" /&gt;</description>
      <comments>http://www.atrevido.net/blog/CommentView,guid,65e1bf80-d2a7-42e8-904c-9e758ded0afa.aspx</comments>
      <category>ast_mono</category>
      <category>Asterisk</category>
      <category>Code</category>
    </item>
    <item>
      <trackback:ping>http://www.atrevido.net/blog/Trackback.aspx?guid=07ea8bca-1ee6-4b8b-9296-ec200b13049b</trackback:ping>
      <pingback:server>http://www.atrevido.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.atrevido.net/blog/PermaLink,guid,07ea8bca-1ee6-4b8b-9296-ec200b13049b.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://www.atrevido.net/blog/CommentView,guid,07ea8bca-1ee6-4b8b-9296-ec200b13049b.aspx</wfw:comment>
      <wfw:commentRss>http://www.atrevido.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=07ea8bca-1ee6-4b8b-9296-ec200b13049b</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Out of all my experiences (heh) with Linux, Mono has to be the best one. It just works.
I'm writing a set of web services to manage Asterisk. Things like adding users to
the dialplan, configuring incoming numbers, voicemail, etc. I wrote a library to deal
with the config files in VS2005, and tested on VS2005. Drag and drop, and bingo: it
works just fine on Linux. 
<br /><br />
I just got a nice queued reload finished for Asterisk via my webservices. A little
bit of threading code, and 40 lines later, it's done. Build, drag and drop (Samba),
and presto. Works, smoothly. I just can't stress how cool it is to be able to work
with MS tools, use shared code libraries with Windows, and then just drag and drop
over the network and have it running right alongside with Asterisk.<br /><br />
We're doing a pretty ambitious project, the entire front-end on Windows, and Linux
for everything to do with the voice. So far, everything's been a breeze, thanks to
.NET. Not having to write in C, or ... PHP &lt;shudder&gt; ... is so nice. At any
rate, we're hoping to launch by the end of the month. So if we do, I'll go into more
detail on what things .NET let us just speed right through. 
<br /><br />
And already, I've made a new convert. We hired a guy who has worked with Java and
PHP, never with .NET. You should of seen his face and heard his comments when I took
him on a whirlwind tour of ASP.NET 2 and web services, adding in xcopy deployment
to Linux in to boot. Wow :).
</p>
        <img width="0" height="0" src="http://www.atrevido.net/blog/aggbug.ashx?id=07ea8bca-1ee6-4b8b-9296-ec200b13049b" />
      </body>
      <title>Mono is so nice</title>
      <guid isPermaLink="false">http://www.atrevido.net/blog/PermaLink,guid,07ea8bca-1ee6-4b8b-9296-ec200b13049b.aspx</guid>
      <link>http://www.atrevido.net/blog/2005/02/09/Mono+Is+So+Nice.aspx</link>
      <pubDate>Wed, 09 Feb 2005 06:57:52 GMT</pubDate>
      <description>&lt;p&gt;
Out of all my experiences (heh) with Linux, Mono has to be the best one. It just works.
I'm writing a set of web services to manage Asterisk. Things like adding users to
the dialplan, configuring incoming numbers, voicemail, etc. I wrote a library to deal
with the config files in VS2005, and tested on VS2005. Drag and drop, and bingo: it
works just fine on Linux. 
&lt;br&gt;
&lt;br&gt;
I just got a nice queued reload finished for Asterisk via my webservices. A little
bit of threading code, and 40 lines later, it's done. Build, drag and drop (Samba),
and presto. Works, smoothly. I just can't stress how cool it is to be able to work
with MS tools, use shared code libraries with Windows, and then just drag and drop
over the network and have it running right alongside with Asterisk.&lt;br&gt;
&lt;br&gt;
We're doing a pretty ambitious project, the entire front-end on Windows, and Linux
for everything to do with the voice. So far, everything's been a breeze, thanks to
.NET. Not having to write in C, or ... PHP &amp;lt;shudder&amp;gt; ... is so nice. At any
rate, we're hoping to launch by the end of the month. So if we do, I'll go into more
detail on what things .NET let us just speed right through. 
&lt;br&gt;
&lt;br&gt;
And already, I've made a new convert. We hired a guy who has worked with Java and
PHP, never with .NET. You should of seen his face and heard his comments when I took
him on a whirlwind tour of ASP.NET 2 and web services, adding in xcopy deployment
to Linux in to boot. Wow :).
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.atrevido.net/blog/aggbug.ashx?id=07ea8bca-1ee6-4b8b-9296-ec200b13049b" /&gt;</description>
      <comments>http://www.atrevido.net/blog/CommentView,guid,07ea8bca-1ee6-4b8b-9296-ec200b13049b.aspx</comments>
      <category>Asterisk</category>
      <category>Code</category>
    </item>
    <item>
      <trackback:ping>http://www.atrevido.net/blog/Trackback.aspx?guid=b3a469a2-c262-4120-9263-808d2e0f2dec</trackback:ping>
      <pingback:server>http://www.atrevido.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.atrevido.net/blog/PermaLink,guid,b3a469a2-c262-4120-9263-808d2e0f2dec.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://www.atrevido.net/blog/CommentView,guid,b3a469a2-c262-4120-9263-808d2e0f2dec.aspx</wfw:comment>
      <wfw:commentRss>http://www.atrevido.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=b3a469a2-c262-4120-9263-808d2e0f2dec</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I ran into an issue with Asterisk, mainly that you can't dynamically control which
codec gets accepted. You have to make your choice “up front”, when you
define a user/peer. This means, for example, if you want to say “for this call,
use the GSM codec”, you can't. You've got to let Asterisk's code work things
out, and even it works out on your side, the callee might decide to use a different
codec anyways. This means that I end up declaring various peers: peerX-g729, peerX-ulaw,
etc., and then have to swap them out when I call Dial. 
<br /><br />
Even worse, there's no easy way of completely avoiding transcoding when you want to.
For instance, I have several phones connected to my server. Some use GSM, some use
ULAW, some use G.729. They all use the same dialplan, and ulaw is usually negotiated
for the termination. That means my little server gets nailed doing all this transcoding.
This is even sillier when you realise that my termination provider has big hardware
and will handle transcoding for me. So, without making a seriously complex dialplan,
I'm stuck.<br /><br />
Well, IMO, that sucks. 
<br /><br />
So, I actually dove into the code, and patched it: <a href="http://bugs.digium.com/bug_view_page.php?bug_id=0003346">http://bugs.digium.com/bug_view_page.php?bug_id=0003346</a> I've
yet to see if this will get into the actual codebase. I sure hope so, since I
*hate* forking. Indeed, that's one major criticism I have of the “you can just
modify it to suit your needs“ claims of OSS. But, the ones in power seem
quite rational, so there's some hope... maybe :).<br /><br />
Asterisk is a large project, but thanks to Visual C++ 2005, I could navigate it (New
Project From Existing Code is very useful!). Unfortunately, I think there's a bug,
as VS takes up 1.4GB of memory when editing this project. However, it's still quite
responsive -- except for the Virtual Memory Warning from Windows, and the initial
slowness, I'd never notice it was eating all that memory.
</p>
        <img width="0" height="0" src="http://www.atrevido.net/blog/aggbug.ashx?id=b3a469a2-c262-4120-9263-808d2e0f2dec" />
      </body>
      <title>My first open source contribution</title>
      <guid isPermaLink="false">http://www.atrevido.net/blog/PermaLink,guid,b3a469a2-c262-4120-9263-808d2e0f2dec.aspx</guid>
      <link>http://www.atrevido.net/blog/2005/01/16/My+First+Open+Source+Contribution.aspx</link>
      <pubDate>Sun, 16 Jan 2005 04:03:31 GMT</pubDate>
      <description>&lt;p&gt;
I ran into an issue with Asterisk, mainly that you can't dynamically control which
codec gets accepted. You have to make your choice &amp;#8220;up front&amp;#8221;, when you
define a user/peer. This means, for example, if you want to say &amp;#8220;for this call,
use the GSM codec&amp;#8221;, you can't. You've got to let Asterisk's code work things
out, and even it works out on your side, the callee might decide to use a different
codec anyways. This means that I end up declaring various peers: peerX-g729, peerX-ulaw,
etc., and then have to swap them out when I call Dial. 
&lt;br&gt;
&lt;br&gt;
Even worse, there's no easy way of completely avoiding transcoding when you want to.
For instance, I have several phones connected to my server. Some use GSM, some use
ULAW, some use G.729. They all use the same dialplan, and ulaw is usually negotiated
for the termination. That means my little server gets nailed doing all this transcoding.
This is even sillier when you realise that my termination provider has big hardware
and will handle transcoding for me. So, without making a seriously complex dialplan,
I'm stuck.&lt;br&gt;
&lt;br&gt;
Well, IMO, that sucks. 
&lt;br&gt;
&lt;br&gt;
So, I actually dove into the code, and patched it: &lt;a href="http://bugs.digium.com/bug_view_page.php?bug_id=0003346"&gt;http://bugs.digium.com/bug_view_page.php?bug_id=0003346&lt;/a&gt;&amp;nbsp;I've
yet to see if this will get into the actual codebase. I sure&amp;nbsp;hope so, since I
*hate* forking. Indeed, that's one major criticism I have of the &amp;#8220;you can just
modify it to suit your needs&amp;#8220; claims of OSS. But, the&amp;nbsp;ones in power seem
quite rational, so there's some hope... maybe :).&lt;br&gt;
&lt;br&gt;
Asterisk is a large project, but thanks to Visual C++ 2005, I could navigate it (New
Project From Existing Code is very useful!). Unfortunately, I think there's a bug,
as VS takes up 1.4GB of memory when editing this project. However, it's still quite
responsive -- except for the Virtual Memory Warning from Windows, and the initial
slowness, I'd never notice it was eating all that memory.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.atrevido.net/blog/aggbug.ashx?id=b3a469a2-c262-4120-9263-808d2e0f2dec" /&gt;</description>
      <comments>http://www.atrevido.net/blog/CommentView,guid,b3a469a2-c262-4120-9263-808d2e0f2dec.aspx</comments>
      <category>Code</category>
      <category>Asterisk</category>
    </item>
  </channel>
</rss>