Summary:ASTERISK-09037: SIP SLA trunk fails codec negotiation after recent change
Reporter:Terry Wilson (twilson)Labels:
Date Opened:2007-03-17 01:36:49Date Closed:2007-07-09 21:20:41
Versions:Frequency of
Description:Starting with revision 58894, without any config changes, SLA outbound dialing with a SIP trunk fails to work giving:

-- Executing [s@outbound:2] DISA("Local/s@outbound-9ac6,2", "no-password|outbound-trunk") in new stack
[Mar 17 00:49:08] WARNING[3698]: channel.c:2816 set_format: Unable to find a codec translation path from g723 to ulaw
[Mar 17 00:49:08] WARNING[3698]: app_disa.c:147 disa_exec: Unable to set write format to Mu-law on Local/s@outbound-9ac6,2

 If attemptcallerid=yes is placed in sla.conf, everything works again.

****** STEPS TO REPRODUCE ******

Standard SLA for SIP trunk as per example in doc/sla.txt (mine is slightly modified, but essentially the same--worked in prior svn revisions).  Make outbound dial from a station.  sip.conf has disallow=all, allow=ulaw.


I have traced the problem to this change:
- dial_res = ast_dial_run(dial, trunk_ref->chan, 1);
+ dial_res = ast_dial_run(dial, sla.attempt_callerid ? trunk_ref->chan : NULL, 1);

Since the chan argument is NULL, ast_dial_run calls begin_dial with a NULL channel which calls ast_request with AST_FORMAT_AUDIO_MASK instead of chan->nativeformats which screws everything up.  The problem being that begin_dial does more than set the caller id, which was the original scope of the patch.  I'm not entirely sure of what the solution is, since this is the first I've really looked at the SLA code, but hopefully this is enough to go on.  I can make my test machine available if necessary.
Comments:By: Terry Wilson (twilson) 2007-03-17 04:29:07

Marked major since it completely makes SLAs unusable (at least with SIP trunks).

By: Russell Bryant (russell) 2007-03-26 13:29:03

This should be fixed in 1.4 and trunk in revisions 59215 and 59216.  Let me know if you have any more problems.  Thanks!