[Freeswitch-users] implementing missed call without a race

Neil Patel neilp at cs.stanford.edu
Thu Jan 3 16:46:40 MSK 2013

Hi All,

I recently implemented "missed call" functionality into my lua app: an
inbound call comes in, I check the DB if it should be a "missed call". If
so, the call is terminated and the caller is called back through an
outbound call. This is useful in places like India where people are charged
for outbound calls only.

Thanks to help from folks on FS IRC, I implemented like so:

   1. script1.lua takes the inbound call
   2. If missed call is to be made, invoke script2.lua (passing script1's
   uuid) through a bgapi call, and let script1.lua terminate
   3. in script2.lua, uuid_kill the session from script1.lua, and make an
   outbound call to the original caller

Two questions:

   1. Are there any problems with this implementation from correctness and
   performance standpoints?
   2. I am using this app over a TDM (PRI) connection. During very heavy
   load, there is a race condition: after killing the original session but
   before initiating the new outbound call in script2, the available channel
   could be grabbed. Is there any way to fix or mitigate this race?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-users/attachments/20130103/cea075d2/attachment.html 

Join us at ClueCon 2011 Aug 9-11, 2011
More information about the FreeSWITCH-users mailing list