[asterisk-dev] IAX Connections Between 1.4, 1.6 and 1.2

Wolfgang Pichler wpichler at yosd.at
Wed Nov 18 00:03:46 CST 2009


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 ?

best regards,
Wolfgang



More information about the asterisk-dev mailing list