[SR-Users] noack and t_relay erros errors

Daniel-Constantin Mierla miconda at gmail.com
Thu Nov 11 20:05:45 CET 2010



On 11/11/10 7:42 PM, JR Richardson wrote:
>> Hi All,
>>
>> I'm still getting these errors and I'm struggling to resolve the
>> problem.  I think I'm missing an append_branch or something simple in
>> my config, a little guiedance will be appriciated.
>>
>> The error:
>>
>> Nov 11 10:23:26 sip-router1 /usr/local/sbin/kamailio[23739]: ERROR: tm
>> [t_fwd.c:1379]: ERROR: t_forward_nonack: no branches for forwarding
>> Nov 11 10:23:26 sip-router1 /usr/local/sbin/kamailio[23739]: ERROR: tm
>> [tm.c:1300]: ERROR: w_t_relay_to: t_relay_to failed
>>
>> The sip graph causing the error:
>>
>> http://pastebin.com/VHhQ1sJY
>>
>> My config:
>>
>> http://pastebin.com/BYn4g5ur
>>
>> Do I need to have a mechanism to deal with a 486 form the carrier?
>>
>> Thanks.
>>
>> JR
>> --
>> JR Richardson
>> Engineering for the Masses
>>
>>
>>
>> ------------------------------
>>
>> Message: 4
>> Date: Thu, 11 Nov 2010 11:52:21 -0500
>> From: Alex Balashov<abalashov at evaristesys.com>
>> Subject: Re: [SR-Users] noack and t_relay erros errors
>> To: sr-users at lists.sip-router.org
>> Message-ID:<4CDC1F45.1000704 at evaristesys.com>
>> Content-Type: text/plain; charset=ISO-8859-1; format=flowed
>>
>> 1. One problem may be that you are calling route[RELAY] from your
>> failure route and using sl_send_reply().  The route[RELAY] is still
>> being invoked in a failure route execution context, even if you have
>> managed to contextually invoke another route, or subroutine if you will.
>>   Stateless replies (sl_reply_error()) cannot be sent from within a
>> failure route.
>>
>> 2. Yes. throw an append_branch() into your failure route.
>>
>> --
>> Alex Balashov - Principal
>> Evariste Systems LLC
>> 1170 Peachtree Street NE
>> 12th Floor, Suite 1200
>> Atlanta, GA 30309
>> Tel: +1-678-954-0670
>> Fax: +1-404-961-1892
>> Web: http://www.evaristesys.com/
>>
> Well, that seemed to help greatly, so far no more errors after
> changing my failure route to:
>
> failure_route[FAIL_ONE] {
>          if (t_is_canceled()) {
>          exit;
>          }
>
>          ds_mark_dst("P");
>          ds_next_dst();
you should wrap ds_next_dst() in an 'if' condition so you don't create 
new branches when there is no destination address left to try.

if(ds_next_dst()) {
     append_branch();
     t_relay();
}

Also, if you have more that 2 addresses in the destination group and 
want to try all, re-arm the failure route

if(ds_next_dst()) {
     append_branch();
     t_on_failure("FAIL_ONE");
     t_relay();
}

>          append_branch();

This is needed for version less or equal to 3.0.x if ds_append_branch 
parameter is 0. Starting with 3.1.0 is no longer needed (if still used 
is harmless).

Cheers,
Daniel

>          t_relay();
> }
>
> Thanks Alex, right on target again.
>
> JR

-- 
Daniel-Constantin Mierla
http://www.asipto.com




More information about the sr-users mailing list