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