I'm seeing a different behavior of t_set_fr depending on transports.
Scenario is that a endpoint has a failover defined in the registrat
after 10s (t_set_fr(10000) and handling the locally generated 408 to the
failover destination). This works fine when the request and response
where delivered over UDP. When the Path is TCP the failover happends
after 30s (even when using a different time t_set_fr(20000) so it is not
a factor 3 or something like that).
Setup:
OK, 10s:
Orig->UDP->loadbalancer->UDP->registrar->UDP->loadbalancer->TCP->Term
Fail, 30s:
Orig->UDP->loadbalancer->TCP->registrar->TCP->loadbalancer->TCP->Term
Loadbalancer and registrar are kamailio machines (4.3.6). Communication
between lb and registrar is based on dispatcher and path modules.
1 sip:registrar:5060;transport=udp 8 0
or via tcp:
1 sip:registrar:5060;transport=tcp 8 0
In the location database of the registrar the difference between the
cases is:
socket:
udp:registrar:5060
or via tcp
tcp:registrar:5060
path:
<sip:lb@loadbalancer;lr;received=sip:1.2.3.4:5067%3Btransport%3Dtcp>
or via tcp
<sip:lb@loadbalancer;transport=tcp;lr;received=sip:1.2.3.4:5067%3Btransport%3Dtcp>
Looking at debug(=3) nothing happens between the initial INVITE and the
local 408 as far as I can see.