[SR-Users] Dispatcher, Failure Route and fr_timeout

Daniel-Constantin Mierla miconda at gmail.com
Tue Jul 7 09:06:11 CEST 2015


Hello,

you need to re-arm the failure route inside the failure_route, before
relaying again. Failure routes are armed one time, when a final response
is received, it is reset.

Cheers,
Daniel

On 06/07/15 19:40, Asgaroth wrote:
> Hi All,
>
> I would like to reduce the time it takes for kamailio to timeout an
> initial message to a dispatcher destination so that it will select the
> next destination in the set, before, hopefully, a restransmission. In
> this case I am testing registration messages.
>
> I came accross the t_set_fr() function in the TM module documentation
> today and have been experimenting with it for some hours. I have an
> issue where a 408 timout is sent back to the UAC before the last
> destination in the dispatcher set is selected, I suspect I am hitting
> the timeout somewhere, but I cannot see where, I presume the
> fr_timeout is set every time I issue the t_set_fr() call and the
> associated t_relay.
>
> I'm just wondering if I am doing this correctly, if one of the guru's
> out there wouldnt mind casting an eyeball over this config and let me
> know if I am on the right track, or if I am going about this in the
> wrong way. Any suggestions are most welcome.
>
> What appears to be happening is, I have 3 destinations in the
> dispatcher set, it looks like the 1st 2 are tried, which correctly
> timeout and are set inactive-probing, but on the last destination,
> which is working, I appear to be getting a 408 timeout being sent back
> from kamailio.
>
> Here is a snip of my configuration:
>
> #!define NO_RESPONSE_TIMER 250
>
> request_route {
>     t_on_failure("DISPATCHER_FAILURE");
>     t_set_fr(0, NO_RESPONSE_TIMER);
>     if(!ds_select_dst("1", "0")) {
>         xlog("L_ERR", "No dispatcher destinations available for $ru\n");
>         sl_send_reply("500", "No destination available");
>         exit;
>     }
>     route("RELAY")
> }
>
> route[RELAY] {
>     if (!t_relay()) {
>         sl_reply_error();
>     }
>     exit;
> }
>
> failure_route[DISPATCHER_FAILURE] {
>     if (t_is_canceled()) {
>         exit;
>     }
>
>     # select next destination only for local timeout
>     if (t_branch_timeout() && !t_branch_replied()) {
>         xlog("L_INFO", "route[DISPATCHER_FAILURE] : $rm : timeout and
> no reply ($si:$sp->$Ri:$Rp->$du)\n");
>         xlog("L_INFO", "route[DISPATCHER_FAILURE] : $rm : setting $du
> to probing state");
>         ds_mark_dst("ip");
>         if(ds_next_dst()) {
>             xlog("L_INFO", "route[DISPATCHER_FAILURE] : $rm : next
> destination selected ($du)\n");
>             t_set_fr(0, NO_RESPONSE_TIMER);
>             t_relay();
>             exit;
>         } else {
>             xlog("L_INFO", "route[DISPATCHER_FAILURE] : $rm : No
> destinations available for $rd");
>             send_reply("500", "No destination available");
>             exit;
>         }
>     }
> }
>
>
> _______________________________________________
> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
> sr-users at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users

-- 
Daniel-Constantin Mierla
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
Book: SIP Routing With Kamailio - http://www.asipto.com




More information about the sr-users mailing list