[Kamailio-Users] fr_inv_timer not honored (fr_inv_timer/2 is used in fact)

Iñaki Baz Castillo ibc at aliax.net
Thu Mar 25 15:29:48 CET 2010


2010/3/25 Juha Heinanen <jh at tutpro.com>:
> I aki Baz Castillo writes:
>
>  > As I said (kamailio 1.5.4) I set "fr_inv_timer=200" for TM module and
>  > use LCR for serial forking (failover). I also do failover is no final
>  > reply is received from the first gateway, however I do not manually
>  > override fr_inv_timer, neither using LCR AVP's (as
>  > $avp(FR_TIMER_AVP)).
>
> in k 1.5 config, i have
>
> modparam("tm", "fr_inv_timer", INVITE_TIMEOUT)
> modparam("tm", "fr_timer_avp", "$avp(FR_TIMER_AVP)")
>
> where INVITE_TIMEOUT is something like 120.
>
> then after calling next_gw() and before calling t_relay(), i set
>
> $avp(FR_TIMER_AVP) = GW_TIMEOUT;
>
> where GW_TIMEOUT is a small constant.  i do not do anything in the
> script to fr_inv_timer.  that simply tells the total time how long the
> process can last.  it makes no sense for the proxy to try longer than
> something like 120 sec, because UACs usually timeout anyway if you
> increase the time much longer.

I've a UAC waiting for a ringing call "forever" (the typicall
callcenter in which calls are made by a not properly configured
dialer).


>  > There are two gateways in lcr/gw tables and TM raises timout after 100
>  > seconds if no final reply was received by the first contacted gateway,
>  > and later after 100 seconds again if no final reply was received from
>  > gateway-2.
>
> i don't understand why you would try the second gw, if you got for
> example ringing reply from the first one.

That's true, I should decite to stop the call (reply 408) or leave it
ringing by the same gateway (so I would need to increase the
fr_inv_timer for such branch). However this doesn't explain the bug
I'm reporting :)


>  > This is not what it happens in my case, as the total time is
>  > "fr_inv_timer" and such time is divided by the number of serial
>  > forking it *could* occur. IMHO just the LCR module knows such
>  > information, retrieved during "load_gateways()" function.
>
> lcr module gw functions do not do anything to any timer.

But how is possible that the effective fr_inv_timer per branch is
exactly divided by the number of gateways loaded after load_gatways()
?
How could the TM module do something like this?

NOTE: I'havent tryied with 3 or more gateways. Perhaps TM module is
dividing the fr_inv_timer by 2 due to some other reason...



-- 
Iñaki Baz Castillo
<ibc at aliax.net>




More information about the sr-users mailing list