Zappasodi Daniele schrieb:
Hello,
I have a problem with parallel forking and TCP when one connection isn't
available and the inv_timeout expires.
I have two clients registered with the same username and transport=TCP.
If I make a call to this number when one of them is not reachable, the
INVITE goes to the phone reachable, if the call timeout expires
(fr_inv_timer_avp) Openser sends the CANCEL, but doesn't send anything
to the caller.
The failure_route doesn't hit.
Looks like a bug.
There is also a delay between the t_relay and the forwarding of the
packet TCP on the net (around 3 seconds). The TCP packet is forwarded to
the available connection only after Openser detects the failure for the
closed TCP connection (the INVITE goes on the net only after the message
ERROR:tm:t_forward_nonack: sending request failed).
I suspect the problem is synchronous blocking TCP operation. Openser
tries to send to first contact, then to second contact. As sending to
first contact fails (probably with a TCP timeout of 3 seconds - check
core book documentation for setting TCP timeouts) it takes 3 seconds
until it sends the request on the second connection.
regards
klaus