2009/3/10 Juha Heinanen jh@tutpro.com:
i was playing with t_relay and tcp and noticed that when forwarding to a tcp contact fails, transaction is still created although README says:
* 0x02 - do not internally send a negative reply in case of forward failure (due internal error, bad RURI, bad message, etc). When a forward failure occurs, no SIP request is relayed and therefore no negative reply or timeout will show up on the failure_route (if one is set). It applies only when the transaction is created. By default one negative reply is sent. Useful if you want to implement a serial forking in case of failure.
how is it possible that the transaction was created even when the first t_relay failed with result code -6?
It's really confusing. The above code says: "It applies only when the transaction is created."
It needs some clarification about in which cases t_realy doesn't create a transaction. Also, which transaction are we speaking about? server or client transaction?:
UA1 --------- (UDP) ------------- Kamailio
# (UDP) UA1 --> Kamailio INVITE sip:non-existing-domain.org;transport=tcp SIP/2.0
In this case I assume that Kamailio won't create a client transaction since the hostpart is unresolvable, but it would create a server transaction to handle the incoming UDP INVITE.
Is it the expected behaviour?
However, the worst issue is the different behaviour when executing t_relay() for UDP and TCP. AFAIK this is an already open discussion.