<div dir="ltr">Stanislav,<div><br></div><div>I&#39;m guessing I could count on one hand the number of times any of my production systems have had to process 30 calls in one second, and I&#39;ve been using FreeSWITCH since the earliest releases in a mission critical application for my primary telecom business.</div><div><br></div><div>I can certainly appreciate that some FreeSWITCH users need to think at giant scale and about how they can squeeze every last ounce of performance out of their instances, I&#39;ve just never had to do it. Perhaps this experience reflects in my library. :)</div><div><br></div><div>Still, I&#39;m not convinced that doing it the way I have costs a lot in performance. I think it would be interesting to whip up a few simple load testing scenarios, and run one set via dialplan only or dialplan with focused Lua scripts, and another set through Jester. Do you have any thoughts on what that set of scenarios might look like to effectively gauge the performance difference?</div><div><br></div><div>Chad</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jan 25, 2016 at 4:13 PM, Stanislav Sinyagin <span dir="ltr">&lt;<a href="mailto:ssinyagin@gmail.com" target="_blank">ssinyagin@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Chad,<br>
<br>
if it&#39;s a daemon that stays in memory, it doesn&#39;t need to be written<br>
in C. It just needs to handle concurrent requests efficiently. It<br>
could be anything like python, perl, java... or golang which beats<br>
them in performance because it&#39;s compiled into native code. But the<br>
bottleneck would anyway be in I/O or database lookups, so it should<br>
simply be the language which you master the best.<br>
<br>
The nice thing about ESL is that it allows you to build a clusterized<br>
environment, with separated functional nodes and easily scalable. Then<br>
you may, for example, keep FreeSWITCH on a physical CPU churning its<br>
real-time tasks, and the application logic on a set of virtual<br>
machines with less-demanding SLA.<br>
<br>
I know some guys who implement this with Node.js. I&#39;m not sure it&#39;s<br>
the right choice, but still it shows adequate performance.<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
On Mon, Jan 25, 2016 at 11:20 PM, Chad Phillips &lt;<a href="mailto:chad@apartmentlines.com">chad@apartmentlines.com</a>&gt; wrote:<br>
&gt; Stanislav,<br>
&gt;<br>
&gt; Back when I originally wrote Jester, we did some basic load testing of the<br>
&gt; Comdian Mail replica profile against Asterisk&#39;s actual Comedian Mail (which<br>
&gt; is written in C), and the Jester implementation outperformed it.<br>
&gt;<br>
&gt; I think you may be overestimating strain of loading Jester once per call.<br>
&gt; Not counting comments, the core module is less than 800 lines of code<br>
&gt; (hardly &#39;huge&#39;), the other modules are all smaller than that, and they can<br>
&gt; be loaded conditionally based upon what you want to accomplish. And for<br>
&gt; those looking to squeeze more performance out, there&#39;s a supplied script to<br>
&gt; pre-compile core and all modules, which means they wouldn&#39;t have to be<br>
&gt; re-compiled every time they&#39;re loaded.<br>
&gt;<br>
&gt; I&#39;m clear that there would be more efficient approaches than writing a Lua<br>
&gt; toolkit, and, I doubt that most of them would be as easily accessible as<br>
&gt; something written in Lua. Given that Lua is already blazing fast for a<br>
&gt; scripting language, I think it&#39;s a fair compromise.<br>
&gt;<br>
&gt; I will add that I&#39;ve considered rewriting the core functionality in C for a<br>
&gt; number of reasons, performance being one of them, but at this time have<br>
&gt; neither the skill nor the time to learn the skill of writing C code at that<br>
&gt; level. Someday, maybe... :)<br>
&gt;<br>
&gt; Chad<br>
&gt;<br>
&gt; On Sun, Jan 24, 2016 at 10:54 PM, Stanislav Sinyagin &lt;<a href="mailto:ssinyagin@gmail.com">ssinyagin@gmail.com</a>&gt;<br>
&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; Yes, for relatively small scripts that are concentrated on their jobs. But<br>
&gt;&gt; this thing is huge.<br>
&gt;&gt;<br>
&gt;&gt; On 25 Jan 2016 3:36 am, &quot;Michael Jerris&quot; &lt;<a href="mailto:mike@jerris.com">mike@jerris.com</a>&gt; wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Lua is likely to be by far the most efficient of any scripting language<br>
&gt;&gt;&gt; used in FreeSWITCH, if there is still really a concern about performance,<br>
&gt;&gt;&gt; more pieces can be moved to helpers built out in c code.  If you are looking<br>
&gt;&gt;&gt; for dynamic but still optimal performance, lua is likely your best bet<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; On Sunday, January 24, 2016, Stanislav Sinyagin &lt;<a href="mailto:ssinyagin@gmail.com">ssinyagin@gmail.com</a>&gt;<br>
&gt;&gt;&gt; wrote:<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; why not re-implementing it in Golang and ESL?<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; What&#39;s happening now with your system, is that FreeSWITCH loads few<br>
&gt;&gt;&gt;&gt; thousand lines of Lua code on every call establishment. So, even with<br>
&gt;&gt;&gt;&gt; default 30cps limit, you may overload the CPU with unnecessary job.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; if you don&#39;t like Go, it could be some other language, but I like the<br>
&gt;&gt;&gt;&gt; built-in threads in it.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; On Sun, Jan 24, 2016 at 9:47 PM, Chad Phillips &lt;<a href="mailto:chad@apartmentlines.com">chad@apartmentlines.com</a>&gt;<br>
&gt;&gt;&gt;&gt; wrote:<br>
&gt;&gt;&gt;&gt; &gt; Hi Bote,<br>
&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt; &gt; The difference is (supposed to be) that using Jester takes a lot of<br>
&gt;&gt;&gt;&gt; &gt; the<br>
&gt;&gt;&gt;&gt; &gt; dirty work out of doing things that you must turn to scripting for.<br>
&gt;&gt;&gt;&gt; &gt; The<br>
&gt;&gt;&gt;&gt; &gt; original design was to remove almost all scripting complexity, and<br>
&gt;&gt;&gt;&gt; &gt; instead<br>
&gt;&gt;&gt;&gt; &gt; have users use a more template-based approach to writing their<br>
&gt;&gt;&gt;&gt; &gt; advanced<br>
&gt;&gt;&gt;&gt; &gt; workflows. You can have a look at<br>
&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt; &gt; <a href="http://thehunmonkgroup.github.io/jester/doc/topics/03-Sequences.md.html#Writing_sequences" rel="noreferrer" target="_blank">http://thehunmonkgroup.github.io/jester/doc/topics/03-Sequences.md.html#Writing_sequences</a><br>
&gt;&gt;&gt;&gt; &gt; to see the basic template style.<br>
&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt; &gt; And here&#39;s an example template that does some fairly advanced stuff:<br>
&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt; &gt; <a href="http://thehunmonkgroup.github.io/jester/doc/examples/phone_to_post_test.lua.html" rel="noreferrer" target="_blank">http://thehunmonkgroup.github.io/jester/doc/examples/phone_to_post_test.lua.html</a><br>
&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt; &gt; To my eyes, what the template accomplishes is quite easy to deduce<br>
&gt;&gt;&gt;&gt; &gt; from<br>
&gt;&gt;&gt;&gt; &gt; simply reading it, and all of the dirty work for taking those actions<br>
&gt;&gt;&gt;&gt; &gt; is<br>
&gt;&gt;&gt;&gt; &gt; handled by Jester core and the supporting modules.<br>
&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt; &gt; The current limitation is that you must use the template structure to<br>
&gt;&gt;&gt;&gt; &gt; gain<br>
&gt;&gt;&gt;&gt; &gt; access to Jester&#39;s modules. Looking back, this was a design mistake<br>
&gt;&gt;&gt;&gt; &gt; that I<br>
&gt;&gt;&gt;&gt; &gt; intend to rectify -- it would be much more powerful and flexible to<br>
&gt;&gt;&gt;&gt; &gt; use a<br>
&gt;&gt;&gt;&gt; &gt; template when it made sense, and still be able to mix pure Lua<br>
&gt;&gt;&gt;&gt; &gt; scripting<br>
&gt;&gt;&gt;&gt; &gt; with calls to Jester&#39;s support modules when that makes more sense. And<br>
&gt;&gt;&gt;&gt; &gt; what<br>
&gt;&gt;&gt;&gt; &gt; I&#39;m hoping to get help with is correcting that design flaw while<br>
&gt;&gt;&gt;&gt; &gt; preserving<br>
&gt;&gt;&gt;&gt; &gt; &#39;the good stuff&#39; in the toolkit.<br>
&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt; &gt; Chad<br>
&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt; &gt; On Fri, Jan 22, 2016 at 2:16 PM, Bote Man &lt;<a href="mailto:bote_radio@botecomm.com">bote_radio@botecomm.com</a>&gt;<br>
&gt;&gt;&gt;&gt; &gt; wrote:<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt; Hey Chad, long time no chat J  I saw your update to the Help section<br>
&gt;&gt;&gt;&gt; &gt;&gt; of<br>
&gt;&gt;&gt;&gt; &gt;&gt; the Confluence page concerning this and glanced at some things there.<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt; I guess I don’t even know enough to understand the difference between<br>
&gt;&gt;&gt;&gt; &gt;&gt; using your toolkit and just plain writing a Lua script. Would I, for<br>
&gt;&gt;&gt;&gt; &gt;&gt; example, write an abbreviated Lua script that calls tested and proven<br>
&gt;&gt;&gt;&gt; &gt;&gt; functions in your toolkit, sort of like a library?<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt; Anyway it sounds useful, so thanks.<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt; ---<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt; Bote<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt; FreeSWITCH Docs Janitor<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt; <a href="http://freeswitch.org/confluence" rel="noreferrer" target="_blank">http://freeswitch.org/confluence</a><br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt; From: Chad Phillips<br>
&gt;&gt;&gt;&gt; &gt;&gt; Sent: Friday, 22 January, 2016 14:41<br>
&gt;&gt;&gt;&gt; &gt;&gt; Subject: [Freeswitch-users] Seeking collaborators for FreeSWITCH/Lua<br>
&gt;&gt;&gt;&gt; &gt;&gt; scripting toolkit<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt; Looking for folks in the FreeSWITCH community who would be interested<br>
&gt;&gt;&gt;&gt; &gt;&gt; in<br>
&gt;&gt;&gt;&gt; &gt;&gt; collaborating on an open source scripting toolkit I&#39;ve written for<br>
&gt;&gt;&gt;&gt; &gt;&gt; FreeSWITCH/Lua. The basic idea is to have ready made solutions to<br>
&gt;&gt;&gt;&gt; &gt;&gt; common<br>
&gt;&gt;&gt;&gt; &gt;&gt; scripting needs, so as not to reinvent the wheel.<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt; The original project was written in 2010. A lot of it still works<br>
&gt;&gt;&gt;&gt; &gt;&gt; great,<br>
&gt;&gt;&gt;&gt; &gt;&gt; and there are some design flaws that I&#39;d like to work out in the next<br>
&gt;&gt;&gt;&gt; &gt;&gt; release.<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt; Project code is here: <a href="https://github.com/thehunmonkgroup/jester" rel="noreferrer" target="_blank">https://github.com/thehunmonkgroup/jester</a><br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt; Some background and reasoning for the project here:<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt; <a href="http://xylil.com/2016/01/20/jester-freeswitch-lua-and-my-quest-for-an-awesome-scripting-toolkit/" rel="noreferrer" target="_blank">http://xylil.com/2016/01/20/jester-freeswitch-lua-and-my-quest-for-an-awesome-scripting-toolkit/</a><br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt; If anyone is interested in helping, please let me know!<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt; Chad<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt; _________________________________________________________________________<br>
&gt;&gt;&gt;&gt; &gt;&gt; Professional FreeSWITCH Consulting Services:<br>
&gt;&gt;&gt;&gt; &gt;&gt; <a href="mailto:consulting@freeswitch.org">consulting@freeswitch.org</a><br>
&gt;&gt;&gt;&gt; &gt;&gt; <a href="http://www.freeswitchsolutions.com" rel="noreferrer" target="_blank">http://www.freeswitchsolutions.com</a><br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt; Official FreeSWITCH Sites<br>
&gt;&gt;&gt;&gt; &gt;&gt; <a href="http://www.freeswitch.org" rel="noreferrer" target="_blank">http://www.freeswitch.org</a><br>
&gt;&gt;&gt;&gt; &gt;&gt; <a href="http://confluence.freeswitch.org" rel="noreferrer" target="_blank">http://confluence.freeswitch.org</a><br>
&gt;&gt;&gt;&gt; &gt;&gt; <a href="http://www.cluecon.com" rel="noreferrer" target="_blank">http://www.cluecon.com</a><br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt; FreeSWITCH-users mailing list<br>
&gt;&gt;&gt;&gt; &gt;&gt; <a href="mailto:FreeSWITCH-users@lists.freeswitch.org">FreeSWITCH-users@lists.freeswitch.org</a><br>
&gt;&gt;&gt;&gt; &gt;&gt; <a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" rel="noreferrer" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>
&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt; UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" rel="noreferrer" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br>
&gt;&gt;&gt;&gt; &gt;&gt; <a href="http://www.freeswitch.org" rel="noreferrer" target="_blank">http://www.freeswitch.org</a><br>
&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt; &gt; _________________________________________________________________________<br>
&gt;&gt;&gt;&gt; &gt; Professional FreeSWITCH Consulting Services:<br>
&gt;&gt;&gt;&gt; &gt; <a href="mailto:consulting@freeswitch.org">consulting@freeswitch.org</a><br>
&gt;&gt;&gt;&gt; &gt; <a href="http://www.freeswitchsolutions.com" rel="noreferrer" target="_blank">http://www.freeswitchsolutions.com</a><br>
&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt; &gt; Official FreeSWITCH Sites<br>
&gt;&gt;&gt;&gt; &gt; <a href="http://www.freeswitch.org" rel="noreferrer" target="_blank">http://www.freeswitch.org</a><br>
&gt;&gt;&gt;&gt; &gt; <a href="http://confluence.freeswitch.org" rel="noreferrer" target="_blank">http://confluence.freeswitch.org</a><br>
&gt;&gt;&gt;&gt; &gt; <a href="http://www.cluecon.com" rel="noreferrer" target="_blank">http://www.cluecon.com</a><br>
&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt; &gt; FreeSWITCH-users mailing list<br>
&gt;&gt;&gt;&gt; &gt; <a href="mailto:FreeSWITCH-users@lists.freeswitch.org">FreeSWITCH-users@lists.freeswitch.org</a><br>
&gt;&gt;&gt;&gt; &gt; <a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" rel="noreferrer" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>
&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt; &gt; UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" rel="noreferrer" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br>
&gt;&gt;&gt;&gt; &gt; <a href="http://www.freeswitch.org" rel="noreferrer" target="_blank">http://www.freeswitch.org</a><br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; _________________________________________________________________________<br>
&gt;&gt;&gt;&gt; Professional FreeSWITCH Consulting Services:<br>
&gt;&gt;&gt;&gt; <a href="mailto:consulting@freeswitch.org">consulting@freeswitch.org</a><br>
&gt;&gt;&gt;&gt; <a href="http://www.freeswitchsolutions.com" rel="noreferrer" target="_blank">http://www.freeswitchsolutions.com</a><br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Official FreeSWITCH Sites<br>
&gt;&gt;&gt;&gt; <a href="http://www.freeswitch.org" rel="noreferrer" target="_blank">http://www.freeswitch.org</a><br>
&gt;&gt;&gt;&gt; <a href="http://confluence.freeswitch.org" rel="noreferrer" target="_blank">http://confluence.freeswitch.org</a><br>
&gt;&gt;&gt;&gt; <a href="http://www.cluecon.com" rel="noreferrer" target="_blank">http://www.cluecon.com</a><br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; FreeSWITCH-users mailing list<br>
&gt;&gt;&gt;&gt; <a href="mailto:FreeSWITCH-users@lists.freeswitch.org">FreeSWITCH-users@lists.freeswitch.org</a><br>
&gt;&gt;&gt;&gt; <a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" rel="noreferrer" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>
&gt;&gt;&gt;&gt; UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" rel="noreferrer" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br>
&gt;&gt;&gt;&gt; <a href="http://www.freeswitch.org" rel="noreferrer" target="_blank">http://www.freeswitch.org</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; _________________________________________________________________________<br>
&gt;&gt;&gt; Professional FreeSWITCH Consulting Services:<br>
&gt;&gt;&gt; <a href="mailto:consulting@freeswitch.org">consulting@freeswitch.org</a><br>
&gt;&gt;&gt; <a href="http://www.freeswitchsolutions.com" rel="noreferrer" target="_blank">http://www.freeswitchsolutions.com</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Official FreeSWITCH Sites<br>
&gt;&gt;&gt; <a href="http://www.freeswitch.org" rel="noreferrer" target="_blank">http://www.freeswitch.org</a><br>
&gt;&gt;&gt; <a href="http://confluence.freeswitch.org" rel="noreferrer" target="_blank">http://confluence.freeswitch.org</a><br>
&gt;&gt;&gt; <a href="http://www.cluecon.com" rel="noreferrer" target="_blank">http://www.cluecon.com</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; FreeSWITCH-users mailing list<br>
&gt;&gt;&gt; <a href="mailto:FreeSWITCH-users@lists.freeswitch.org">FreeSWITCH-users@lists.freeswitch.org</a><br>
&gt;&gt;&gt; <a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" rel="noreferrer" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>
&gt;&gt;&gt; UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" rel="noreferrer" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br>
&gt;&gt;&gt; <a href="http://www.freeswitch.org" rel="noreferrer" target="_blank">http://www.freeswitch.org</a><br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; _________________________________________________________________________<br>
&gt;&gt; Professional FreeSWITCH Consulting Services:<br>
&gt;&gt; <a href="mailto:consulting@freeswitch.org">consulting@freeswitch.org</a><br>
&gt;&gt; <a href="http://www.freeswitchsolutions.com" rel="noreferrer" target="_blank">http://www.freeswitchsolutions.com</a><br>
&gt;&gt;<br>
&gt;&gt; Official FreeSWITCH Sites<br>
&gt;&gt; <a href="http://www.freeswitch.org" rel="noreferrer" target="_blank">http://www.freeswitch.org</a><br>
&gt;&gt; <a href="http://confluence.freeswitch.org" rel="noreferrer" target="_blank">http://confluence.freeswitch.org</a><br>
&gt;&gt; <a href="http://www.cluecon.com" rel="noreferrer" target="_blank">http://www.cluecon.com</a><br>
&gt;&gt;<br>
&gt;&gt; FreeSWITCH-users mailing list<br>
&gt;&gt; <a href="mailto:FreeSWITCH-users@lists.freeswitch.org">FreeSWITCH-users@lists.freeswitch.org</a><br>
&gt;&gt; <a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" rel="noreferrer" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>
&gt;&gt; UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" rel="noreferrer" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br>
&gt;&gt; <a href="http://www.freeswitch.org" rel="noreferrer" target="_blank">http://www.freeswitch.org</a><br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; _________________________________________________________________________<br>
&gt; Professional FreeSWITCH Consulting Services:<br>
&gt; <a href="mailto:consulting@freeswitch.org">consulting@freeswitch.org</a><br>
&gt; <a href="http://www.freeswitchsolutions.com" rel="noreferrer" target="_blank">http://www.freeswitchsolutions.com</a><br>
&gt;<br>
&gt; Official FreeSWITCH Sites<br>
&gt; <a href="http://www.freeswitch.org" rel="noreferrer" target="_blank">http://www.freeswitch.org</a><br>
&gt; <a href="http://confluence.freeswitch.org" rel="noreferrer" target="_blank">http://confluence.freeswitch.org</a><br>
&gt; <a href="http://www.cluecon.com" rel="noreferrer" target="_blank">http://www.cluecon.com</a><br>
&gt;<br>
&gt; FreeSWITCH-users mailing list<br>
&gt; <a href="mailto:FreeSWITCH-users@lists.freeswitch.org">FreeSWITCH-users@lists.freeswitch.org</a><br>
&gt; <a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" rel="noreferrer" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>
&gt; UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" rel="noreferrer" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br>
&gt; <a href="http://www.freeswitch.org" rel="noreferrer" target="_blank">http://www.freeswitch.org</a><br>
<br>
_________________________________________________________________________<br>
Professional FreeSWITCH Consulting Services:<br>
<a href="mailto:consulting@freeswitch.org">consulting@freeswitch.org</a><br>
<a href="http://www.freeswitchsolutions.com" rel="noreferrer" target="_blank">http://www.freeswitchsolutions.com</a><br>
<br>
Official FreeSWITCH Sites<br>
<a href="http://www.freeswitch.org" rel="noreferrer" target="_blank">http://www.freeswitch.org</a><br>
<a href="http://confluence.freeswitch.org" rel="noreferrer" target="_blank">http://confluence.freeswitch.org</a><br>
<a href="http://www.cluecon.com" rel="noreferrer" target="_blank">http://www.cluecon.com</a><br>
<br>
FreeSWITCH-users mailing list<br>
<a href="mailto:FreeSWITCH-users@lists.freeswitch.org">FreeSWITCH-users@lists.freeswitch.org</a><br>
<a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" rel="noreferrer" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>
UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" rel="noreferrer" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br>
<a href="http://www.freeswitch.org" rel="noreferrer" target="_blank">http://www.freeswitch.org</a></blockquote></div><br></div>