[asterisk-dev] IAX Connections Between 1.4, 1.6 and 1.2
Russell Bryant
russell at digium.com
Wed Nov 18 20:26:43 CST 2009
Wolfgang Pichler wrote:
> Hi all,
>
> i know - version 1.2 is quit old - but i have a system where i can't
> update to a newer version...
>
> I have several iax2 connections between the 1.2 box - and some other
> 1.4 and 1.6 boxes.
>
> After 1.2 there was a new CONTROL_FRAME type introduced - AST_CONTROL_SRCUPDATE
>
> This CONTROL frame is unknown to asterisk 1.2 - and it seems that
> asterisk does break out of the bridge in some cases if it receives
> this control frame.
>
> In asterisk 1.2 - in channel.c there is
>
> if ((f->frametype == AST_FRAME_CONTROL) && !(config->flags &
> AST_BRIDGE_IGNORE_SIGS)) {
> if ((f->subclass == AST_CONTROL_HOLD) || (f->subclass ==
> AST_CONTROL_UNHOLD) ||
> (f->subclass == AST_CONTROL_VIDUPDATE)) {
> ast_indicate(who == c0 ? c1 : c0, f->subclass);
> } else {
> *fo = f;
> *rc = who;
> res = AST_BRIDGE_COMPLETE;
> ast_log(LOG_DEBUG, "Got a FRAME_CONTROL (%d) frame on channel
> %s\n", f->subclass, who->name);
> break;
> }
> }
>
> it does not know SRCUPDATE - so it will set result to
> AST_BRIDGE_COMPLETE and break out of the bridge loop....
>
> I have looked at the 1.4 and 1.6 code - it does seem that a SRCUPDATE
> does get generated every time channels get brigded and every time the
> channel bridge got broken...
>
> Can the SRCUPDATE occour somehow in the midle of a call ? It would
> break iax2 connection to 1.2 if it would occour in the middle of a
> call - or i am wrong ?
A SRCUPDATE can occur at any point during a call. There is code in 1.4
and later to prevent this from causing bad loops in the bridging code.
However, this is in the bug fix area and won't be backported to 1.2.
--
Russell Bryant
Digium, Inc. | Engineering Manager, Open Source Software
445 Jan Davis Drive NW - Huntsville, AL 35806 - USA
Check us out at: www.digium.com & www.asterisk.org
More information about the asterisk-dev
mailing list