[Freeswitch-dev] FXS bridged on FXO ports and DTMF

Moises Silva moises.silva at gmail.com
Mon Jun 7 18:59:55 PDT 2010


git pull and try again ... again, it'd be good if you can join IRC or ping
me on google talk to discuss this.

Moises Silva
Senior Software Engineer
Sangoma Technologies Inc. | 50 McIntosh Drive, Suite 120, Markham ON L3R 9T3
Canada
t. 1 905 474 1990 x 128 | e. moy at sangoma.com


On Mon, Jun 7, 2010 at 7:29 PM, Moises Silva <moises.silva at gmail.com> wrote:

> Hi,
>
> Yes, I see the race now. Locking in the analog module is, in my opinion,
> lacking a refactoring, but I've tried to not touch much the analog module
> since I don't have much time to test it.
>
> Before showing you where the problem is, here is a brief explanation of the
> process for an outgoing call.
>
> When FreeSWITCH wants to place a call it will call the .outgoing_channel
> function pointer of the FreeTDM module, which points to
> channel_outgoing_channel in mod_freetdm.c line 1037. That function is called
> in the caller thread (assuming there is a caller), the caller may be a SIP
> endpoint, other analog channel or whatever technology FS supports. At this
> point ftdm_channel_call_place() will be called, which is pretty much a
> wrapper for the FTDM signaling module outgoing_call function pointer
> (span->outgoing_call) that is set depending on the signaling for that
> channel. In this case is analog_fxs_outgoing_call(). In the case of analog,
> this spawns a new thread, meaning the analog stack spawns a thread per call
> (where all current ISDN stacks have just 1 thread per span handling the
> signaling for all calls in that span at once).
>
> The problem right here is that ftdm_channel_open_chan is using
> ftdm_mutex_trylock(), and with the new code, the channel sometimes will be
> locked by a few microseconds by the outgoing routine, which, if at that
> particular moment ftdm_channel_open_chan is called by the service thread
> (ftdm_analog_channel_run), it will fail the whole call. This is legacy code
> I have leaved pretty much untouched, but I think I will get rid of it and
> use a regular ftdm_mutex_lock().
>
> You can give that a try (just change trylock for lock ... or wait for me, I
> am cooking some changes now that are cleaning up some old and duplicated
> code when opening channels/requesting channels, should be ready tomorrow.
>
> Moises Silva
> Senior Software Engineer
> Sangoma Technologies Inc. | 50 McIntosh Drive, Suite 120, Markham ON L3R
> 9T3 Canada
> t. 1 905 474 1990 x 128 | e. moy at sangoma.com
>
>
> On Mon, Jun 7, 2010 at 4:17 PM, <devel at thom.fr.eu.org> wrote:
>
>>  I’m in the process of testing the patch, and I have some troubles with
>> FXS now.
>>
>>
>>
>> When bridging a call onto an FXS channel, the bridge fails. What seem to
>> happen is the lock acquired in ftmod_analog.c line 83 is not released (seems
>> it is not) before ftdm_analog_channel_run calls ftdm_channel_open_chan which
>> in turn tries to acquire and fails the same lock.
>>
>>
>>
>> If I add a 500ms delay (ftdm_sleep) at the entrance of
>> ftdm_analog_channel_run, the problem disappears.
>>
>> There seem to be a race condition here, but as I have no idea how threads
>> are scheduled (nor within mod_freetdm neither in overall freeswitch) this is
>> beyond my skills. However (I get the same kind of scheduling problems when
>> trying to thread the MWI function) I’d be glad to learn how that works, so
>> if you have any pointers…
>>
>>
>>
>> François
>>
>>
>>
>>
>>
>> *De :* freeswitch-dev-bounces at lists.freeswitch.org [mailto:
>> freeswitch-dev-bounces at lists.freeswitch.org] *De la part de* Moises Silva
>> *Envoyé :* jeudi 3 juin 2010 23:35
>>
>> *À :* freeswitch-dev at lists.freeswitch.org
>> *Objet :* Re: [Freeswitch-dev] FXS bridged on FXO ports and DTMF
>>
>>
>>
>> Something is f'd up there badly. I cannot reproduce this in my A200.
>>
>> Can you give me more details of how are you wiring things up?
>>
>> Also do "git pull", I just improved the DTMF logging to aid in in
>> debugging. Reproduce the problem and pastebin the resulting logs.
>>
>> Regarding your MWI patch. I added some comments on JIRA.
>>
>> Moises Silva
>> Senior Software Engineer
>> Sangoma Technologies Inc. | 50 McIntosh Drive, Suite 120, Markham ON L3R
>> 9T3 Canada
>> t. 1 905 474 1990 x 128 | e. moy at sangoma.com
>>
>>  On Thu, Jun 3, 2010 at 6:46 AM, François Legal <devel at thom.fr.eu.org>
>> wrote:
>>
>> So now using latest git and wanpipe is even worse compared to snapshot
>> from last week. freetdm now also detects and queue the DTMF from the dialed
>> number.
>>
>> The new patch is available.
>>
>> On Wed, 2 Jun 2010 16:26:49 -0400, Moises Silva <moises.silva at gmail.com>
>> wrote:
>>
>> I'm going to test this DTMF scenario now and let you know.
>>
>> In the meantime, would it be much to ask a patch that I can apply using
>> git apply?? The patch still fails to apply using git, I see you are still
>> using svn, try git plz.
>>
>> The code looks good though :-)
>>
>> Moises Silva
>> Senior Software Engineer
>> Sangoma Technologies Inc. | 50 McIntosh Drive, Suite 120, Markham ON L3R
>> 9T3 Canada
>> t. 1 905 474 1990 x 128 | e. moy at sangoma.com
>>
>>  On Wed, Jun 2, 2010 at 4:19 PM, <devel at thom.fr.eu.org> wrote:
>>
>> I just updated to 3.5.11 and the result is the same.
>>
>>
>>
>> *De :* freeswitch-dev-bounces at lists.freeswitch.org [mailto:
>> freeswitch-dev-bounces at lists.freeswitch.org] *De la part de* Moises Silva
>> *Envoyé :* mercredi 2 juin 2010 21:35
>> *À :* freeswitch-dev at lists.freeswitch.org
>> *Objet :* Re: [Freeswitch-dev] FXS bridged on FXO ports and DTMF
>>
>>
>>
>> I believe the problem was that the driver enabled even outgoing DTMF
>> detection on the chip  ( which does not make much sense by default since you
>> only care about incoming ) and was fixed a few months ago
>>
>> Do you still see this behavior? which driver version?
>>
>> Moises Silva
>> Senior Software Engineer
>> Sangoma Technologies Inc. | 50 McIntosh Drive, Suite 120, Markham ON L3R
>> 9T3 Canada
>> t. 1 905 474 1990 x 128 | e. moy at sangoma.com
>>
>> On Wed, Jun 2, 2010 at 3:22 PM, <devel at thom.fr.eu.org> wrote:
>>
>> I come back on this topic as I did not find a clean/good solution to this
>> problem.
>>
>>
>>
>> As reminder, the problem occurs when an FXS channel is bridged on an FXO
>> channel (seen with sangoma A400 hardware with HW DTMF detection).
>>
>> The problem is that each leg of the bridge is detecting the inband DTMF,
>> and so freeswitch sends each detected DTMF from one leg to the other, and so
>> on and so forth (as each leg detects the DTMF again and again).
>>
>>
>>
>> I guess what would be needed for these cases is some application that
>> would prevent detected DTMF to be sent to the other leg.
>>
>>
>>
>> Can anybody give me a hint on whether or not such application exists, and
>> if not, a starting point to try to create one.
>>
>>
>>
>> Thanks
>>
>>
>>
>> François
>>
>>
>>
>>
>> _______________________________________________
>> FreeSWITCH-dev mailing list
>> FreeSWITCH-dev at lists.freeswitch.org
>> http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev
>> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev
>> http://www.freeswitch.org
>>
>>
>>
>>
>> _______________________________________________
>> FreeSWITCH-dev mailing list
>> FreeSWITCH-dev at lists.freeswitch.org
>> http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev
>> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev
>> http://www.freeswitch.org
>>
>>
>>
>>
>> _______________________________________________
>> FreeSWITCH-dev mailing list
>> FreeSWITCH-dev at lists.freeswitch.org
>> http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev
>> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev
>> http://www.freeswitch.org
>>
>>
>>
>> _______________________________________________
>> FreeSWITCH-dev mailing list
>> FreeSWITCH-dev at lists.freeswitch.org
>> http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev
>> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev
>> http://www.freeswitch.org
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-dev/attachments/20100607/6056fd04/attachment.html 


More information about the FreeSWITCH-dev mailing list