Hello,
Thanks for the answer. This answers some of my questions, but I still
have a few more.
With regards to the thread "Re: [SR-Users] CANCEL before INVITE". I
added a t_newtran(); call after t_checktrans() and before t_relay(),
this prevented t_relay() from sending a 100 Trying to the calling user.
Why would the functionality of t_relay() change like this ? Is t_relay()
assuming that I have already send the 100 Trying if the transaction exists?
'Once the CANCEL is constructed, the client SHOULD check whether it has
received any response (provisional or final) for the request being
cancelled (herein referred to as the "original request"). ' - RFC3261
Section 9.
So is this the check that tm 1.4.11 t_checktrans() is doing ? If not,
how should I be doing this check.
It looks like I should be be absorbing transactions pretty much at the
beginning of my routing script after the sanity checks, is that right?
Should the transactions be checked before I call the loose_route() method?
I read that loose_route() should be secured, would it be correct to
request a proxy authentication before calling loose_route() ?
Can a CANCEL request ever be routed using loose_route().
Thanks,
David
On 10-06-18 11:40 AM, Henning Westerholt wrote:
On Friday 18 June 2010, David wrote:
I am using Kamailio 1.5.4.
I read RFC3261 section 17 and the TM doc, I had a few questions :
Does t_relay() manage both the client and server transactions for the
packet being forwarded ? Meaning it would absorb retransmissions it
receives and would retransmit the relayed message when needed ?
Hi,
this is my understanding of the function.
Do I need to call t_release() when I call t_relay
() ?
When the transaction will be ended by means of the message transmission,
e.g.
for a normal INVITE transactions, i think its not necessary.
Where would I use t_checktrans(), t_release() and
t_newtran() ? My
understanding is that if I want to receive a packet and process it
locally without forwarding it, I should use t_newtran(). This would be
good for things such as PUBLISH, PRESENCE and REGISTER ( even though
it's not a good idea ).
The t_newtran() just creates a new transaction. If you then process the msg
locally without forwarding you should release it. I think one reason for
providing this as dedicated function (after all t_relay does it as well) is
that you could use it before some time consuming operations, in order to be
able to absorb retransmissions. Another reason is that you can then take care
of the error condition that the server can't create new transactions any more,
and send a stateless error reply. (Even this probably happens today rarely,
with the increases in available memory.)
So when do I release the transaction ? In the
reply route ? In the same run as I call t_newtran() ?
For the msg that needs it you just do it after processing it. This function
is
only available in REQUEST_ROUTE according the docs.
Does t_checktrans() absorb retransmissions that
were started with
t_relay and t_newtran?
The t_checktrans absorb retransmissions for transactions that were created
by
t_relay or t_newtran.
If you have any material that I could read that
would help me better
understand the TM module, please say so.
You already mentioned it, the RFC 3261 should be helpful to understand
special
functionality bits about tm, like reply code aggregation, branching and so on.
Regards,
Henning